【问题标题】:Intervention Image Resize and Caching in LaravelLaravel 中的干预图像大小调整和缓存
【发布时间】:2019-03-23 04:11:30
【问题描述】:

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

我应该将不同的缩略图大小(100x100200x200400x400 等)存储在自定义的/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/文件夹中删除吗?

【问题讨论】:

    标签: php laravel intervention image-caching


    【解决方案1】:

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

    相对于典型网络请求的持续时间,调整图像大小可能需要很长时间。如果速度对您很重要,那么我绝对建议在最初上传图像时保存调整大小的版本,无论是在上传请求本身期间还是在上传控制器操作调度的作业中。

    如果您使用 Intervention 包的缓存功能,那么当调整大小的图像最近没有缓存时,您可能最终需要“预热”页面。但是,这取决于您的流量模式、使用的缓存实现以及缓存持续时间。如果您尝试它并且它似乎适用于您的用例,那么使用它没有任何问题。

    【讨论】:

    • 我明白了,你是用 laravel 的干预镜像包吗?
    • 我在 Laravel 项目中使用过 Intervention 包,是的
    猜你喜欢
    • 2017-03-28
    • 1970-01-01
    • 2023-01-24
    • 2018-09-21
    • 1970-01-01
    • 2018-11-21
    • 2018-09-23
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多