apache缓存设置适当地获得200或304

时间:2018-05-08 07:15:18

标签: ios apache google-chrome etag response-headers

我在Ubuntu(单服务器机器)上运行Apache 2.4.18。就缓存头而言,我没有对默认设置进行任何更改(与/etc/apache2/apached2.conf没有缓存相关的更改,没有.htaccess文件)。我的理解是,apache的默认行为是使用ETag,如果客户端已经有匹配的文件,则返回304的期望行为,如果不是,则返回200(加上新文件)

这不是我所看到的。

在iOS / Safari上,当我更新服务器上的文件时,我的客户端就像是混合了新旧文件。这可以通过清除Safari中的Web数据并重新加载页面来解决,因此它似乎确实是一个缓存问题。我读到iOS / Safari在(或者至少是早期版本?)方面与ETag标头不同。但我不清楚如何解决这个问题。

在Windows中的Chrome上,即使文件在上次请求后没有更改,即使我可以在标题中看到ETag的使用,也始终提供文件(即响应200,而不是304)。

有人可以在iOS和Chrome上分享他们的apache 2.4设置以获得我在上面描述的所需行为吗?

(这是另一个问题,就Chrome部分提出了同样的问题:Apache + Etags -> returns 200 and send content instead of 304

1 个答案:

答案 0 :(得分:0)

我认为我的问题的答案是,当您使用file://协议进行本地测试而不是http://协议时,缓存的工作方式不同,至少在Chrome中是这样。