Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/272.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 在Laravel中缓存图像的最有效方法_Php_Laravel_Caching - Fatal编程技术网

Php 在Laravel中缓存图像的最有效方法

Php 在Laravel中缓存图像的最有效方法,php,laravel,caching,Php,Laravel,Caching,我正在开发一个Laravel应用程序,在该应用程序中,我需要显示Instagram CDN中的图像,并认为最好将这些图像缓存起来,而不是不断地查询CDN 我发现这是满足我需求的唯一选择。我编写了一个简单的路由,涉及传递CDN url的一部分,然后调用控制器来缓存图像。我必须提到我正在使用文件系统存储作为缓存驱动程序 routes/web.php Route::get('/img/{code}/','PostController@setImageCached'); app/Http/Contro

我正在开发一个Laravel应用程序,在该应用程序中,我需要显示Instagram CDN中的图像,并认为最好将这些图像缓存起来,而不是不断地查询CDN

我发现这是满足我需求的唯一选择。我编写了一个简单的路由,涉及传递CDN url的一部分,然后调用控制器来缓存图像。我必须提到我正在使用文件系统存储作为缓存驱动程序

routes/web.php

Route::get('/img/{code}/','PostController@setImageCached');
app/Http/Controllers/PostController.php

公共函数setImageCached($code){
$cdn_image=$this->getImage($code);
$img=Image::缓存(函数($img)使用($cdn\u Image){
返回$img->make($cdn\u图像);
}, 10);
返回响应::make($img,200,array('Content-Type'=>'image/jpeg');
}
虽然它可以工作,但速度非常慢,几乎是直接从CDN获取图像速度的三倍,所以要么我使用了错误的库,要么它没有缓存图像


是否有更好的方法来缓存CDN中的图像,以便我的应用程序不必不断查询Instagram的CDN?

您可以尝试内置的Laravel缓存机制。不确定您正在使用的库是如何工作的,因此这可能是一种更可靠的方法

公共函数setImageCached($code){
$cdn_image=$this->getImage($code);
$img=Cache::记住($image.'$cdn\u image,10,函数()使用($cdn\u image){
返回文件\u获取\u内容($cdn\u图像);
});
返回响应::make($img,200,array('Content-Type'=>'image/jpeg');
}

您可以尝试内置的Laravel缓存机制。不确定您正在使用的库是如何工作的,因此这可能是一种更可靠的方法

公共函数setImageCached($code){
$cdn_image=$this->getImage($code);
$img=Cache::记住($image.'$cdn\u image,10,函数()使用($cdn\u image){
返回文件\u获取\u内容($cdn\u图像);
});
返回响应::make($img,200,array('Content-Type'=>'image/jpeg');
}

尝试通过nginx或apache缓存图像。
getImage
返回什么?使用php-fpm。希望对你有帮助。我的所有项目都在使用php-fpm。请尝试通过nginx或apache缓存图像。
getImage
返回什么?使用php-fpm。希望对你有帮助。我的所有项目都在php-fpm上工作。相同的代码是否总是生成相同的图像url?我的问题更多的是关于
$cdn\u image=$this->getImage($code)
相同的
$code
值是否总是产生相同的
$cdn_image
值?
缓存::记住
意味着从缓存中返回图像(如果存在),或者运行函数来检索图像(如果不存在)。图像是否存在由缓存键决定。在这种情况下,
'image.$cdn\u image
相同的代码是否总是生成相同的图像url?我的问题更多的是关于
$cdn\u image=$this->getImage($code)
相同的
$code
值是否总是产生相同的
$cdn_image
值?
缓存::记住
意味着从缓存中返回图像(如果存在),或者运行函数来检索图像(如果不存在)。在这种情况下,图像是否存在由缓存键决定
'image.$cdn\u image