【问题标题】:response header to cache the response?响应头缓存响应?
【发布时间】:2016-06-05 09:16:10
【问题描述】:

在我的 web 应用中的一些页面中,我有两种浏览器缓存方案

场景 1:- 如果未在服务器端进行修改,我想从浏览器缓存服务器。例如:-

  1. 用户向所有员工发出请求
  2. 响应返回 10 名员工
  3. 用户再次向所有员工发出请求
  4. 预计这次应该从浏览器缓存中提供服务
  5. 用户再创建一名员工
  6. 用户再次向所有员工发出请求
  7. 预计这次应该从服务器而不是浏览器缓存中提供最新的服务

我打算使用下面的标题

response.setHeader("Cache-Control", "no-cache"); 

作为

no-cache 不会指示浏览器或代理是否 不缓存内容。它只是告诉浏览器和代理 使用前与服务器验证缓存内容

场景 2:- 但是对于一些我根本不想缓存的敏感页面,我计划在标题下方使用它

response.setHeader("Cache-Control",  "no-store"); 

但有些文章可以安全地使用在标题下方,使其适用于所有浏览器。所以我要在下面使用

response.setHeader("Cache-Control", "no-cache, no-store"); 

我提议的实现是否正确?

【问题讨论】:

    标签: java browser browser-cache cache-control


    【解决方案1】:

    对于场景#1,您确实需要将Cache-Control 设置为no-cache(或设置max-age 以获得更好的可伸缩性,但在这种情况下,您不需要最新的值),但您还需要使用 HTTP 标头 ETag 以允许浏览器检查数据内容是否已更改,以便浏览器能够知道是否可以重用缓存条目。

    对于场景#2,您需要将Cache-Control 设置为no-store 以防止浏览器缓存数据,因为这是标准方式,但实际上no-cache, no-store 将有助于处理旧的浏览器,如果你也需要支持的话。

    【讨论】:

      猜你喜欢
      • 2020-03-25
      • 2015-12-13
      • 1970-01-01
      • 2013-10-07
      • 2020-10-08
      • 2011-03-25
      • 1970-01-01
      • 2011-08-04
      • 1970-01-01
      相关资源
      最近更新 更多