已设置过期标头,但仍可看到请求

已设置过期标头,但仍可看到请求

我这样假设可能是错的,但是如果我在文件上设置了过期标头access plus 1 year,并且我可以在标头中看到它,那么当我对该文件发出另一个请求时,它是否应该只是缓存在浏览器中,所以我实际上永远不会在服务器上看到该请求?

我在图片上有以下响应标头:

Connection:Keep-Alive
Date:Mon, 05 Jul 2010 16:17:08 GMT
Etag:"9cc4b2-73b-48a43cbb63300"
Expires:access plus 1 year
Keep-Alive:timeout=15, max=98
Server:Apache/2.2.9 (Debian) PHP/5.2.6-1+lenny6 with Suhosin-Patch

但当我刷新时,我仍然在 Apache 访问日志中看到对该图像的请求。这是预期的行为吗?我认为该请求永远不会到达我的服务器。

顺便说一下,这是我用来设置过期标题的内容:

RewriteCond %{REQUEST_FILENAME} ^\/(images|assets|pdfs) [NC]
RewriteRule ^(.*)$ $1 [E=set_expires_header:true,L]
Header add Expires "access plus 1 year" env=set_expires_header

答案1

查看文档mod_expires。它有一个 ExpiresByType 功能,可以帮你省去 mod_rewrite 规则。它还支持你的英文措辞,根据访问时间添加过期标头。我不相信 mod_headers 足够聪明,能够弄清楚你输入的内容是什么意思,所以 BMDan 的日期格式是正确的。

答案2

不幸的是,这不是有效的 Expires 标头。请参阅http://www.w3.org/Protocols/rfc2616/rfc2616-sec14.html#sec14.21,具体来说,http://www.w3.org/Protocols/rfc2616/rfc2616-sec3.html#sec3.3.1,它定义了一个“HTTP 日期”。

相关内容