Php 在Laravel中缓存图像的最有效方法
我正在开发一个Laravel应用程序,在该应用程序中,我需要显示Instagram CDN中的图像,并认为最好将这些图像缓存起来,而不是不断地查询CDN 我发现这是满足我需求的唯一选择。我编写了一个简单的路由,涉及传递CDN url的一部分,然后调用控制器来缓存图像。我必须提到我正在使用文件系统存储作为缓存驱动程序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
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