浏览器是否可以从其缓存中显示图像(或其他对象)而不会收到 304 状态代码?

浏览器是否可以从其缓存中显示图像(或其他对象)而不会收到 304 状态代码?

我想知道是否有可能避免请求某些嵌入对象,直接从缓存中加载它们,而不询问 Web 服务器该对象是否有效(我不希望 Web 服务器以 304 http 状态代码响应我)这可能吗? 过期标头以这种方式工作吗? 怎么用?


来自我的 htaccess。

    # cache images/pdf docs for 10 days
    <FilesMatch "\.(ico|pdf|jpg|jpeg|png|gif|js)$">

      Header set Expires "Mon, 31 Dec 2035 12:00:00 gmt"

    </FilesMatch>

    # cache html/htm/xml/txt diles for 2 days
    <FilesMatch "\.(html|htm|xml|txt|xsl)$">
      Header set Cache-Control "max-age=7200"
    </FilesMatch>

</IfModule>

与 php header 函数以及 httpd.conf 中的操作类似。

我在 apache access.log 中验证了结果。每次我刷新页面时,access.log 文件中都会出现 304 请求。所以,我认为浏览器总是发出请求。

答案1

是的,你应该使用ExpiresCache-Control: max-age标头来阻止浏览器再次请求对象。请参阅RFC 2616了解详情。

当缓存可以完全避免向源服务器发出请求时,HTTP 缓存效果最佳。避免请求的主要机制是源服务器提供将来的明确到期时间,表明可以使用响应来满足后续请求。换句话说,缓存无需先联系服务器即可返回新的响应。

相关内容