1

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

  1. 当我按 f5 时,会加载一些带有 304 状态代码的文件,但是我希望它们直接来自缓存,而不需要访问服务器以获取状态标头?

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

我知道 304 也从浏览器缓存中提供文件,但我想避免服务器之间的标头通信,因为我的静态文件永远不会改变。另外我想补充一点,我的请求是通过 https 连接进行的,这是否会产生任何问题。

4

2 回答 2

0

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

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

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

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

于 2010-05-11T18:54:43.100 回答
0

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

您想要做的测试是将光标放回地址栏(Win 上的 ALT-d)并按 Enter。这就像重新访问页面,浏览器应该像您期望的那样运行。

于 2010-05-12T17:55:46.253 回答