【发布时间】:2018-10-18 01:44:15
【问题描述】:
我在 Ubuntu(单服务器机器)上运行 Apache 2.4.18。就缓存头而言,我没有对默认设置进行任何更改(对 /etc/apache2/apached2.conf 没有与缓存相关的更改,没有 .htaccess 文件)。我的理解是 apache 的默认行为是使用 ETag,如果客户端已经有匹配的文件,则返回 304,如果没有,则返回 200(加上新文件)。
这不是我看到的。
在 iOS/Safari 上,当我更新服务器上的文件时,我的客户端的行为就好像它混合了新旧文件一样。这可以通过在 Safari 中清除 Web 数据并重新加载页面来解决,因此它似乎确实是一个缓存问题。我读到 iOS/Safari 在对 ETag 标头的尊重方面(或者至少在早期版本中是?)不同。但我不清楚如何解决这个问题。
在 Windows 中的 Chrome 上,始终提供文件(即响应 200,而不是 304),即使文件自上次请求以来没有更改,即使我可以在标头中看到 ETag 的使用。
有人可以分享他们的 apache 2.4 设置以在 iOS 和 Chrome 上获得我上面描述的所需行为吗?
(这是另一个关于 Chrome 部分的问题:Apache + Etags -> returns 200 and send content instead of 304)
【问题讨论】:
-
请解释一下否决票?
-
我猜人们不认为这是一个有用的问题?我不明白您为什么在这里投票失败...也许您应该分享您的配置设置,以便人们可以评论看起来有问题的地方?
-
@GuyKogus,谢谢。实际上,我有一个更长版本的这个问题,其中包含更多细节,但它立即被否决了 3 次(没有 cmets)。所以我想他们可能不喜欢这个长度,所以我提交了这个较短的版本,它立即被拒绝了 4 次。有趣的是,它只有 2 个视图(包括我的一个),但它有 4 个反对票。这怎么可能?至于问题的相关性,我觉得我在问“您如何在最流行的托管平台上进行最常见/基本/理想的缓存形式?” :(
-
所以这个问题太笼统了,真的。 SO 更适合于小而具体的问题,例如“为什么这个算法不起作用?”有一个How to Ask 的帖子可能会指导您,但老实说,恕我直言,您在这里并没有提出任何过于宽泛的要求。
标签: ios apache google-chrome etag response-headers