我们目前使用的是用 PHP 编写的图像缩放器。调整大小脚本利用缓存,并将生成的调整大小的图像写入缓存目录(恰当地命名为cache/
)。
这个过程是这样的,一个重写的 URL,例如:
domain.com/img/250x250/some-image.jpg
将被重写为:
domain.com/image.php?width=250&height=250&src=some-image.jpg&function=resizeCrop
在内部image.php
,我们检查文件是否与cache/
dir 中的调整大小匹配。所有缓存的图像都以名称存储cachFunctionWidth_height_originalName
,因此对于给定的示例,内部生成的图像文件cache/
将命名为resizecrop250_250_some-image.jpg
目前,我们正在利用 PHP 的fpassthru()
函数将文件输出到浏览器(如果存在)。如果不是,我们使用 GD 函数和算法的组合将文件输出到浏览器。
我的问题是,如果使用 HTACCESS(它是 Linux 服务器)image.php
的目录中存在调整大小的图像,我们是否可以完全绕过。cache
本质上,我们需要在服务重写之前检查一个混蛋的名字形式。
例如,这是我们想要实现的一些伪代码,但我认为这是不可能的:
- 用户请求文件 > domain.com/img/250x250/some-image.jpg
- 检查文件是否
cache/resizecrop250_250_some-image.jpg
存在 - 如果是,重写为
cache/resizecrop250_250_some-image.jpg
- 如果没有,请重写为
domain.com/image.php?width=250&height=250&src=some-image.jpg&function=resizeCrop
如果通过 HTACCESS 无法做到这一点,也欢迎任何其他建议。