1

我正在尝试调试我的.htaccess文件,其中包含:

<FilesMatch "\.(html|swf)$">
  <IfModule mod_headers.c>
      Header set Cache-Control "no-cache, public"
  </IfModule>
</FilesMatch>

<IfModule mod_expires.c>
    ExpiresActive On
    ExpiresDefault "access plus 1 month"
    ExpiresByType text/html                     "access plus 0 seconds"
    ExpiresByType application/x-shockwave-flash "access plus 1 month"
</IfModule>

在重复访问我在 Safari 中看到的同一网页时:

名称=Wrapper.html,方法=GET,状态=200(OK),类型=text/html

Name=App.html, Method=GET, Status=200 (OK), Type=application/x-shockwave-flash

对于 Chrome:

Name=Wrapper.html,Method=GET,Status=304(未修改),Type=text/html

Name=App.html,Method=GET,Status=304(未修改),Type=application/x-shockwave-flash

问题是 Safari 在应该从缓存中检索时从服务器下载,而 Chrome 正确地从缓存中检索。

那么,我如何Status=304从服务器到 Safari(如 Chrome 所示)?(我猜这是根本原因,如果不是,请告诉我)

更新

我刚刚检查了缓存文件,似乎 Safari 并没有首先将下载的文件放入缓存中,以便在将来访问时从中提取。不知道为什么。

4

1 回答 1

1

这与服务器或 htaccess 文件无关。Safari 发送的请求需要一个If-Modified-Since标头,否则如果Last-Modified时间早于请求中的时间,apache 将不会以 304 响应。

我不知道为什么 Safari 不发送标头,或者它只是偶尔发生还是与某处的某些浏览器设置有关。但你不是唯一发生这种情况的人

于 2013-10-31T21:12:26.427 回答