expires标头的说明

时间:2010-05-11 18:32:25

标签: performance .htaccess browser-cache mod-expires

我有一个joomla应用程序在Apache上运行。为了提高站点性能,我们已经将.htaccess文件写入应用程序的根目录,并为所有静态内容设置了远期的expires头。根据需要,首次使用200状态代码加载新文件。当再次点击同一链接时,许多文件直接从缓存中提供。我需要解释两件事

  1. 当我按f5然后一些文件加载​​了304状态代码但是我希望它们直接来自缓存而不会命中服务器获取状态标题?

  2. 当我关闭浏览器并再次回到同一页面时,我看到同样的事情发生了许多文件加载了304状态代码,虽然我认为它们会直接从浏览器缓存加载?

  3. 据我所知,304还提供来自浏览器缓存的文件,但我想避免服务器之间的标头通信,因为我的静态文件永远不会改变。此外,我想补充一点,我的请求是通过https连接,这会产生任何问题。

2 个答案:

答案 0 :(得分:0)

使用安全会话确实可能导致缓存问题。

为了安全起见,许多浏览器不会缓存SSL数据,除非在SSL会话期间。当浏览器或选项卡关闭时,SSL缓存将被刷新。

Firefox有一个配置选项来控制它。关于IE,我不知道。也可能有一些Cache-Control标头会覆盖此行为。

我相信Cache-Control标头是HTTP / 1.1,你应该使用它和Expires。 Cache-Control提供了更多用于控制缓存的功能。

答案 1 :(得分:0)

浏览器具有基于过期时间发送缓存内容请求的算法。通常,具有远期未来标题的内容永远不会像您期望的那样重新加载。但是,点击重新加载或F5 会忽略,并强制重新加载所有页面内容。

要测试它的目的是将光标放回地址栏(Win中的ALT-d)并按Enter键。这就像重新访问页面一样,浏览器的行为应该与您期望的一样。