响应标头缓存响应?

时间:2016-06-05 09:16:10

标签: java browser browser-cache cache-control

在我的网页应用程序的某些页面中,我有两种浏览器缓存方案

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

  1. 用户向所有员工发出请求
  2. 响应返回10名员工
  3. 用户再次向所有员工发出请求
  4. 期望是这次应该从浏览器缓存
  5. 提供
  6. 用户再创建一名员工
  7. 用户再次向所有员工发出请求
  8. 期望是这次应该从服务器而不是浏览器缓存服务最新
  9. 我打算使用下面的标题

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

    作为

      

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

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

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

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

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

    我建议的实施是否正确?

1 个答案:

答案 0 :(得分:2)

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

对于场景#2 ,您需要将Cache-Control设置为no-store,以防止浏览器以标准方式缓存数据,但确实no-cache, no-store如果你也需要支持它们,将有助于在旧版浏览器上工作。