![Http 标头 304 和缓存?](https://linux22.com/image/598245/Http%20%E6%A0%87%E5%A4%B4%20304%20%E5%92%8C%E7%BC%93%E5%AD%98%EF%BC%9F.png)
我们公司使用这些设置(不要问我为什么) - 对于每个请求,他们都希望从服务器发出新请求。这是一个仅使用 IE 的内部网系统。
他们将其定义为:
我们也有 Windows 身份NTLM
验证iis7
。
我有 2 个问题。
Question #1)
当浏览器发出请求时(css):
(暂时保留 401 响应 - 这是 ntlm 的工作方式)
他正在使用if-modified-since
标题来请求它。
他为什么要添加这个标题?我该如何配置它?为什么他不使用 IE 中的设置并每次都尝试下载它 - 正如我在第一张图片中所示?
Question #2)
响应 (ntlm 协商后) 是:
响应带有Not-modified
304 标头。我认为这是因为我们发送了带有标头的请求if-modified-since
。
但有一个问题。
他实际上告诉我从我的缓存中下载。
但我在 IE 设置中明确地告诉他 -不是从缓存中加载。
我在这里错过了什么吗?
多谢。
答案1
问题 1
他为什么要添加这个标题?
因为浏览器已经在缓存中拥有内容的副本。如果发生这种情况
1) 已经过了有效期
2)浏览器已配置为每次都检查更新版本
我该如何配置它?
对于 (1),你无能为力 - 这就是 HTTP 的工作方式。对于 (2),请将配置更改为选中“自动”
第二季度
但是我在 IE 设置中明确告诉他 - 不要从缓存中加载。
否 - 对浏览器的指令是查看对于较新的版本 - 如果请求的条件部分匹配,则 Web 服务器将仅返回新版本(带有 200 响应)。
答案2
您要求的设置是一个非常糟糕的想法。如果你真的实施了这项措施,所有东西的加载速度都会变慢。你连接的每个服务器都会变得非常慢。我不知道为什么要你这么做,但是你应该找出原因,这样你才能对真正的问题找到合理的解决方案。
另外,您根本无法使用 Internet Explorer 来做到这一点。它无法完全禁用缓存(Internet 临时文件)。
您可能会遇到一种情况,即漫游配置文件的用户拥有大量 IE 缓存,这些缓存最终会被复制到网络上。如果这是真正的问题,那么您可以告诉 IE 在退出时清空缓存. 至少就 IE 的缓存而言,将不再进行任何大型文件复制。