php - Laravel 中的干预图像大小调整和缓存
问题描述
当我上传图像(例如:)user/1/user_profile_img.jpg
时,我希望干预图像创建多个缩略图大小(100x100
、、200x200
等400x400
),这些大小将用于不同的页面以提高页面速度得分。
我应该将不同的缩略图大小(100x100
,200x200
等400x400
)存储在自定义/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/
文件夹中删除吗?
解决方案
我应该存储不同的缩略图大小 [...] 还是在访问页面时生成它们 [...]?
相对于典型 Web 请求的持续时间,调整图像大小可能需要很长时间。如果速度对您很重要,那么我绝对建议在最初上传图像时保存调整大小的版本,无论是在上传请求本身期间还是在上传控制器操作调度的作业中。
如果您使用 Intervention 包的缓存功能,那么当调整大小的图像最近没有缓存时,您可能最终需要“预热”页面。但是,这取决于您的流量模式、使用的缓存实现以及缓存持续时间。如果您尝试它并且它似乎适用于您的用例,那么使用它没有任何问题。
推荐阅读
- canvas - Fabricjs 画布对象在 Safari 浏览器中返回空白图像
- python - 如何在 Numpy 中获取大于阈值的最大 N 值的索引?
- python - 用于提取字典特定部分的 for 循环方法
- audio - Gstreamer 合并实时音频(麦克风输入)和视频(网络摄像头输入)管道以通过 UDP 发送
- django-models - 方法 __str__ 输出所有作为回报的字段
- ios - 在 MacBook Air M1 上构建 iOS Flutter App 时出错
- c# - ids4如何根据用户id从数据库中获取用户生成access_token
- spring-boot - 如何使用从一对一或一对多关系获得的行执行 JPQL?
- python - suds-py3 中的日期时间格式
- visual-c++ - C26434 函数 xxx 隐藏了一个非虚拟函数