在我的网络应用程序的某些页面中,我有两种浏览器缓存方案
场景 1:- 如果不在服务器端修改,我想从浏览器缓存进行服务器。例如:-
- 用户向所有员工发出请求
- 响应返回 10 名员工
- 用户再次向所有员工发出请求
- 期望这次应该从浏览器缓存中提供
- 用户又创建了一名员工
- 用户再次向所有员工发出请求
- 期望这次应该从服务器而不是浏览器缓存提供最新服务
我打算使用下面的标题
response.setHeader("Cache-Control", "no-cache");
作为
no-cache is not instructing the browser or proxies about whether or not to cache the content. It just tells the browser and proxies to validate the cache content with the server before using it
场景 2:- 但对于一些敏感页面,我根本不想缓存,我计划使用下面的标题
response.setHeader("Cache-Control", "no-store");
但是有些文章可以安全地使用下面的标题,使其适用于所有浏览器。所以我将使用下面的
response.setHeader("Cache-Control", "no-cache, no-store");
我提议的实现正确吗?
最佳答案
对于场景#1,您确实需要将Cache-Control
设置为no-cache
(或设置max-age
以获得更好的可扩展性,但在这种情况下,您不需要最新值),但您还需要使用 HTTP header ETag以便让浏览器检查数据内容是否发生变化,以便浏览器能够知道缓存条目是否可以重用。
对于场景 #2,您需要将 Cache-Control
设置为 no-store
以防止浏览器按原样缓存数据标准方式,但实际上无缓存、无存储
将有助于在旧浏览器上工作(如果您也需要支持它们)。
关于java - 响应头来缓存响应?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37640274/