我有一个从数据库请求许多图像的站点。这些请求看起来像:
http://site.com/image/hash121231
这会在客户端返回 200 OK,表示即使底层类型是 png,并且它的标头是 image/png,它也没有被缓存。
我的 httpd.conf 中有这个
<IfModule mod_expires.c>
ExpiresActive On
ExpiresDefault "access plus 1 seconds"
ExpiresByType text/html "access plus 1 seconds"
ExpiresByType image/gif "access plus 12 months"
ExpiresByType image/jpeg "access plus 12 months"
ExpiresByType image/png "access plus 12 months"
ExpiresByType text/css "access plus 1 week"
ExpiresByType text/javascript "access plus 1 week"
ExpiresByType application/x-javascript "access plus 1 week"
ExpiresByType text/xml "access plus 1 week"
</IfModule>
现在,请求的图像如下:
http://site.com/static/image.png
返回 304,告诉我它被缓存了。
我推断它一定是文件扩展名一定是导致问题的原因。我很难重写我的网站块以将扩展应用到图像请求并处理它。有什么方法可以让 Apache 检测类型并附加扩展名?还是其他原因导致了这种情况?
更新
遵循本网站的指南后:http ://www.hardanswers.net/dynamic-webpage-caching我已经得到它的大部分工作。
现在唯一的问题是,浏览器似乎每隔一个请求就使用缓存来处理这些图像。我不确定这是浏览器的行为,还是与上面示例中代码的工作方式有关。