mod_rewrite用于提供静态缓存文件(如果它们存在且源文件未更改)

时间:2011-03-02 22:21:49

标签: apache caching .htaccess mod-rewrite

我正在开发一个处理图像的项目,将处理过的图像保存在缓存中,然后将处理后的图像输出到客户端。假设项目位于/ project /中,缓存位于/ project / cache /中,源图像位于服务器上的任何其他位置(如/ images /或/ otherproject / images /)。我可以设置缓存来镜像源图像的路径(例如,如果源图像是/images/image.jpg,该图像的缓存可能是/project/cache/images/image.jpg),请求项目大致是/ project / path / to / image(例如/project/images/image.jpg)。

我想尽可能有效地提供缓存中的图像(如果存在)。但是,我还希望能够检查自创建缓存图像以来源图像是否已更改。理想情况下,这将全部用mod_rewrite完成,因此不需要使用PHP来完成任何工作。

这可能吗? mod_rewrite规则需要什么才能实现?

或者,让mod_rewrite在大多数时间提供缓存文件似乎是一个很好的折衷方案,但是对于缓存的文件,要向PHP脚本发送1个X请求。这可能吗?

2 个答案:

答案 0 :(得分:1)

您无法从RewriteRule访问文件修改时间戳,因此无法使用PHP或其他编程语言执行该任务。

另一方面,这在PHP中非常简单,因此您应首先检查PHP解决方案是否足够好。只有不是你应该寻找替代品。

答案 1 :(得分:0)

如果您使用客户端进行某些工作怎么办?假设您在Web浏览器中显示图像并始终使用src =“/ cache / images / foobar.jpg”并添加onerror =“this.src ='/ images / foobar.jpg'”。在mod_rewrite中,将发送到/ images / dir的任何内容发送到将返回并在缓存中生成图像的脚本。

相关问题