• 关于HTML(JSP)页面的缓存设置 -- cache-control


    我在项目中遇到这么一个问题,当用户登录了系统后,进入并copy下系统某个页面的link,然后关闭浏览器,重新打开浏览器,把刚才复制好的link paste到浏览器的地址栏去,直接enter,发现浏览器跳过了登录页面而直接进入刚才进入到的页面里了。
          这个问题,我一开始以为是我的URL sercurity 的问题,搞了很久,最后才发现是缓存的问题。
    然后就在JSP页面做如下设置,就完美解决了这个问题。

    在JSP页面头加上如下代码段:

    <%  
    response.setHeader( "Cache-Control", "no-cache,no-store");//HTTP 1.1
    response.setDateHeader( "Expires", 0 ); //prevent caching at the proxy server
    response.setHeader( "Pragma", "no-cache" );  //HTTP 1.0  
    %>

    在HTML的head标签里面加上如下代码段:
    <meta http-equiv="Pragma" content="no-cache">  
    <meta http-equiv="Cache-Control" content="no-cache">  
    <meta http-equiv="Expires" content="Sat, 01 Dec 2001 00:00:00 GMT">  

    如上设置即可使页面在每次访问时都必须向服务器发出请求。

    下面是网上找到的关于HTML里缓存的cache-control的设置描述:
    网页的缓存是由HTTP消息头中的“Cache-control”来控制的,常见的取值有private、no-cache、max-age、must-revalidate等,默认为private。其作用根据不同的重新浏览方式分为以下几种情况:
    1) 打开新窗口 值为private、no-cache、must-revalidate,那么打开新窗口访问时都会重新访问服务器。 而如果指定了max-age值,那么在此值内的时间里就不会重新访问服务器,例如: Cache-control: max-age=5(表示当访问此网页后的5秒内再次访问不会去服务器) 
    2) 在地址栏回车 值为private或must-revalidate则只有第一次访问时会访问服务器,以后就不再访问。 值为no-cache,那么每次都会访问。 值为max-age,则在过期之前不会重复访问。
    3) 按后退按扭 值为private、must-revalidate、max-age,则不会重访问, 值为no-cache,则每次都重复访问 
    4) 按刷新按扭 无论为何值,都会重复访问 Cache-control值为“no-cache”时,访问此页面不会在Internet临时文章夹留下页面备份。
    另外,通过指定“Expires”值也会影响到缓存。例如,指定Expires值为一个早已过去的时间,那么访问此网时若重复在地址栏按回车,那么每次都会重复访问: Expires: Fri, 31 Dec 1999 16:00:00 GMT 比如:禁止页面在IE中缓存 http响应消息头部设置: CacheControl = no-cache Pragma=no-cache Expires = -1 Expires是个好东东,如果服务器上的网页经常变化,就把它设置为-1,表示立即过期。
  • 相关阅读:
    spring的APO
    设计系统测试计划需要参考的项目文档有
    系统测试的策略
    软件测试包括
    简述你在以前的工作中做过哪些事情,比较熟悉什么
    在C/C++中static有什么用途?(请至少说明两种)
    引用与指针有什么区别?
    说说你对集成测试中自顶向下集成和自底向上集成两个策略的理解,要谈出它们各自的优缺点和主要适应于哪种类型测试;
    系统测试的策略
    通过画因果图来写测试用例的步骤为___、___、___、___及把因果图转换为状态图共五个步骤。 利用因果图生成测试用例的基本步骤是:
  • 原文地址:https://www.cnblogs.com/mengfff/p/5111157.html
Copyright © 2020-2023  润新知