页面的缓存与不缓存设置

    添加时间:2013-7-25 点击量:

      HTML的HTTP和谈头信息中把握着页面在几个处所的缓存信息,包含浏览器端,中心缓存办事器端(如:squid等),Web办事器端。本文评论辩论头信息 中带缓存把握信息的HTML页面(JSP/Servlet生成好出来的也是HTML页面)在中心缓存办事器中的缓存景象。


          HTTP和谈中关于缓存的信息头关键字包含Cache-Control(HTTP1.1),Pragma(HTTP1.0),last-Modified,Expires等。


          HTTP1.0中经由过程Pragma 把握页面缓存,可以设置:Pragma或no-cache。网上有很是多的文章申明如何把握不让浏览器或中心缓存办事器缓存页面,凡是设置的值为no- cache,不过这个值不这么保险,凡是还加上Expires置为0来达到目标。然则如我们克意须要浏览器或缓存办事器缓存住我们的页面这个值则要设置为 Pragma。


          HTTP1.1中启用Cache-Control 来把握页面的缓存与否,这里介绍几个常用的参数:



    • no-cache,浏览器懈弛存办事器都不该该缓存页面信息;

    • public,浏览器懈弛存办事器都可以缓存页面信息;

    • no-store,恳乞降响应的信息都不该该被存储在对方的磁盘体系中;

    • must-revalidate,对于客户机的每次恳求,办事器必须想办事器验证缓存是否过期;


           Last-Modified只页面的最后生成时候,GMT格局;


           Expires过期刻日值,GMT格局,指浏览器或缓存办事器在该时候点后必须从真正的办事器中获取新的页面信息;


           上方两个值在JSP中设置值为字符型的GMT格局,无法生效,设置long类型才生效;



    下面是一个测试例子:



     1 package com.servlet;
    
    2
    3 import java.io.IOException;
    4 import java.io.PrintWriter;
    5
    6 import javax.servlet.ServletException;
    7 import javax.servlet.http.HttpServlet;
    8 import javax.servlet.http.HttpServletRequest;
    9 import javax.servlet.http.HttpServletResponse;
    10
    11 public class ServletA extends HttpServlet {
    12 @Override
    13 public void service(HttpServletRequest request, HttpServletResponse response)
    14 throws ServletException, IOException {
    15 response.setContentType(text/html);
    16 //servlet页面默认是不缓存的
    17 //本页面容许在浏览器端或缓存办事器中缓存,时限为20秒。
    18 //20秒之内从头进入该页面的话不会进入该servlet的
    19 java.util.Date date = new java.util.Date();
    20 response.setDateHeader(Last-Modified,date.getTime()); //Last-Modified:页面的最后生成时候
    21 response.setDateHeader(Expires,date.getTime()+20000); //Expires:过期刻日值
    22 response.setHeader(Cache-Control, public); //Cache-Control来把握页面的缓存与否,public:浏览器懈弛存办事器都可以缓存页面信息;
    23 response.setHeader(Pragma, Pragma); //Pragma:设置页面是否缓存,为Pragma则缓存,no-cache则不缓存
    24
    25 //不容许浏览器端或缓存办事器缓存当前页面信息。
    26 /response.setHeader( Pragma, no-cache );
    27 response.setDateHeader(Expires, 0);
    28 response.addHeader( Cache-Control, no-cache );//浏览器懈弛存办事器都不该该缓存页面信息
    29 response.addHeader( Cache-Control, no-store );//恳乞降响应的信息都不该该被存储在对方的磁盘体系中;
    30 response.addHeader( Cache-Control, must-revalidate );///于客户机的每次恳求,办事器必须想办事器验证缓存是否过期;
    31
    32 System.out.println(进入了servlet);
    33 response.getWriter().write(迎接惠临我的主页);
    34 }
    35
    36
    37 }


      若是须要在html页面上设置不缓存,这在<head>标签中参加如下语句:



    1 <meta http-equiv=pragma content=no-cache>
    
    2 <meta http-equiv=cache-control content=no-cache>
    3 <meta http-equiv=expires content=0>



    附:html页面中meta的感化


      meta是用来在HTML文档中模仿HTTP和谈的响应头报文。meta 标签用于网页的<head>与</head>中,meta 标签的用处很多。meta 的属性有两种:name和http-equiv。name属性首要用于描述网页,对应于content(网页内容),以便于搜刮引擎机械人查找、分类(今朝几乎所有的搜刮引擎都应用网上机械人主动查找meta值来给网页分类)。这此中最首要的是description(站点在搜刮引擎上的描述)和keywords(分类关键词),所以应当给每页加一个meta值。斗劲常用的有以下几个:


      name 属性


      1、<meta name=Generator contect=>用以申明生成对象(如Microsoft FrontPage 4.0)等;


      2、<meta name=KEYWords contect=>向搜刮引擎申明你的网页的关键词;


      3、<meta name=DEscription contect=>告诉搜刮引擎你的站点的首要内容;


      4、<meta name=Author contect=你的姓名>告诉搜刮引擎你的站点的建造的作者;


      5、<meta name=Robots contect= all|none|index|noindex|follow|nofollow>


      此中的属性申明如下:


      设定为all:文件将被检索,且页面上的链接可以被查询;


      设定为none:文件将不被检索,且页面上的链接不成以被查询;


      设定为index:文件将被检索;


      设定为follow:页面上的链接可以被查询;


      设定为noindex:文件将不被检索,但页面上的链接可以被查询;


      设定为nofollow:文件将不被检索,页面上的链接可以被查询。


      http-equiv属性


      1、<meta http-equiv=Content-Type contect=text/html;charset=gb_2312-80>


    和 <meta http-equiv=Content-Language contect=zh-CN>用以申明主页建造所应用的文字以及说话;


      又如英文是ISO-8859-1字符集,还有BIG5、utf-8、shift-Jis、Euc、Koi8-2等字符集;


      2、<meta http-equiv=Refresh contect=n;url=http://yourlink>按时让网页在指定的时候n内,跳转到页面http://yourlink;


      3、<meta http-equiv=Expires contect=Mon,12 May 2001 00:20:00 GMT>可以用于设定网页的到期时候,一旦过期则必须到办事器上从头调用。须要重视的是必须应用GMT时候格局;


      4、<meta http-equiv=Pragma contect=no-cache>是用于设定禁止浏览器从本地机的缓存中调阅页面内容,设定后一旦分开网页就无法从Cache中再调出;


      5、<meta http-equiv=set-cookie contect=Mon,12 May 2001 00:20:00 GMT>cookie设定,若是网页过期,存盘的cookie将被删除。须要重视的也是必须应用GMT时候格局;


      6、<meta http-equiv=Pics-label contect=>网页等级评定,在IE的internet选项中有一项内容设置,可以防止浏览一些受限制的网站,而网站的别就是经由过程meta属性来设置的;


      7、<meta http-equiv=windows-Target contect=_top>强迫页面在当前窗口中以自力页面显示,可以防止本身的网页被别人算作一个frame页调用;


      8、<meta http-equiv=Page-Enter contect=revealTrans(duration=10,transtion= 50)>和<meta http-equiv=Page-Exit contect=revealTrans(duration=20,transtion=6)>设定进入和分开页面时的特殊结果,这个功能即FrontPage中的“格局/网页过渡”,不过所加的页面不克不及够是一个frame页面。

    无论对感情还是对生活,“只要甜不要苦”都是任性而孩子气的,因为我们也不完美,我们也会伤害人。正因为我们都不完美,也因为生活从不是事事如意,所以对这些“瑕疵”的收纳才让我们对生活、对他人的爱变得日益真实而具体。—— 汪冰《世界再亏欠你,也要敢于拥抱幸福》
    分享到: