Http 避免对缓存文件的请求

Http 避免对缓存文件的请求,http,caching,http-headers,browser-cache,cache-control,Http,Caching,Http Headers,Browser Cache,Cache Control,我有一个web服务器,它存储page.html和style.css文件。当我尝试在浏览器中打开IP_ADDRESS/index.html时,浏览器会一致地向web服务器发送两个请求。第一个请求page.html,第二个请求style.css,这是page.html的需要。我希望尽可能长时间地在客户端浏览器中缓存style.css。为此,我在标题中插入如下行: Cache-Control: public, max-age=31536000, immutable 当我试图在浏览器中打开page.h

我有一个web服务器,它存储page.html和style.css文件。当我尝试在浏览器中打开IP_ADDRESS/index.html时,浏览器会一致地向web服务器发送两个请求。第一个请求page.html,第二个请求style.css,这是page.html的需要。我希望尽可能长时间地在客户端浏览器中缓存style.css。为此,我在标题中插入如下行:

Cache-Control: public, max-age=31536000, immutable
当我试图在浏览器中打开page.html时,我第一次看到两个请求,它们的状态都是200。下一次,当我打开page.html时,我还会看到两个请求,但对page.html的请求状态为200,对style.css的请求状态为304

我通过Wireshark嗅探流量,甚至尝试Burp Suite扫描http请求/响应,我看到了下一张图片:

  • 第一次连接到web服务器:对于page.html的第一个请求,我获得“200OK”响应;对于style.css的第二个请求,我获得“200OK”响应
  • 与网页的第二个连接:对于page.html的第一个请求,我获得“200 OK”响应;对于style.css的第二个请求(如果自以来修改,则有标题
    ),我获得“304 Not Modified”响应
但问题是,对style.css的第二个请求仍然会发送。我需要完全删除它,因为客户端浏览器已经有了这个文件。请告诉我,当客户端浏览器缓存了style.css文件时,我应该向style.css的响应头添加什么以避免对该文件的任何请求。我希望看到,当客户端第一次获取page.html和style.css文件时,将style.css保存在本地浏览器缓存中,下次客户端只请求page.html而不请求style.css时,哪个客户端从本地缓存中获取


谢谢您的帮助。

您用来检查此问题的浏览器是什么?铬?Chrome似乎做到了这一点(发送缓存响应的验证请求)。@Pubudu,我已经尝试了Firefox和Chrome。但我希望有一个适用于流行浏览器的工作解决方案,包括移动版本。是否真的没有解决方案添加一些响应头来指定客户端浏览器在不检查其修改的情况下使用自己的缓存?理想情况下,客户端应该从缓存中查找,除非1)明确告知它不要这样做(例如,
无缓存
指令)2)回复陈旧且不允许送达陈旧与您的问题有点类似。。