Laravel中干预图像的大小调整和缓存

时间:2018-10-18 11:02:55

标签: php laravel intervention image-caching

当我上传图像时(例如:user/1/user_profile_img.jpg,我希望干预图像创建多个缩略图尺寸(100x100200x200400x400等),这些尺寸将用于不同页面以提高页面速度得分。

是否应该在自定义100x100文件夹中存储不同的缩略图大小(200x200400x400/cache/等)?就像“ /cache/user/1/user_profile_img-100x100.jpg

或者当我通过干预图像缓存调整大小路线访问页面时生成它们:

{{ route('photos/item/100x100/userprofile/user_profile_img.jpg') }}

在blade.php模板中?

Route::get('photos/item/{size}/{reference}/{photo}', 'ImgController@showImg');

我看到干预图像缓存功能中有一个'lifetime (optional)'参数:

$img = Image::cache(function($image) {
   $image->make('public/foo.jpg')->resize(300, 200)->greyscale();
}, 10, true);
  

缓存中图像回调的生命周期,以分钟为单位。

是用于设置图像缓存的到期时间吗?

是否将图像从/cache/文件夹中自动删除?

1 个答案:

答案 0 :(得分:0)

“我应该存储不同的缩略图大小吗?还是在访问页面时生成它们?”

在请求期间调整图像大小可能需要相对较长的时间,因此,如果您可以在上传图像时(或在立即触发的后台作业中)生成各种尺寸,那么我建议这样做。

即使您使用了Intervention的缓存功能,当重新调整大小的图像最近没有被缓存时,您可能最终也常常需要“预热”页面。这可能取决于您的流量模式和缓存实现,但是如果它对您有用,那就太好了。