`

html页面缓存(code304)

 
阅读更多

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页面。

分享到:
评论

相关推荐

    从入门到精通HTML5——PDF——网盘链接

     2.3.9 禁止从缓存中调用 24  2.3.10 删除过期的cookie 25  2.3.11 强制打开新窗口 25  2.3.12 设置网页的过渡效果 26  2.4 基底网址标记&lt;base&gt; 29  2.5 页面的主体标记&lt;body&gt; 30  2.5.1 设置...

    JS控制页面跳转时未请求要跳转的地址怎么回事

    其实,想表达的仅仅是,在js中通过[removed].href控制页面跳转时,有时会跳转至缓存页面,并没有真正去请求要跳转的地址,导致页面数据未能及时加载刷新。 直奔code… 解决办法: 在HTML中埋入隐藏from,通过js调用...

    零基础学ASP.NET 2.0电子书&源代码绝对完整版1

    App_Code\ People.cs 实现记录个人基本信息的自定义控件。 App_Code\ Name.cs Name属性的自定义状态管理类。 第9章(\Chapter 09) 示例描述:本章学习母版页。 MasterPage.master 一个简单的母版页。 9-01....

    详解HTML5中rel属性的prefetch预加载功能使用

    在HTML5中,有个很有用但常被忽略的特性,就是预先加载(prefetch),它的原理是: 利用浏览器的空闲时间去先下载用户指定需要的内容,然后缓存起来,这样用户下次加载时,就直接从缓存中取出来,效率就快了. 举个例子说明:...

    CleanCode

    这个程序的目的是记录最好的编码技术Notes控制器部分的所有CRUD已通过其他方式完成 Fizz Buzz示例的根目录是app / ObjectOrientedDesign 您可能要讲的内容:如何在Rails中使用python 创建一个控制器页面主页(注意,...

    HTML5的结构和语义(4):语义性的内联元素

    HTML4用5个不同的内联元素表示略有差异的计算机代码:var、code、kbd、tt和samp。但是,它无法表示时间、数字等基本数值。HTML5提供了几个新的内联元素来满足非技术作者的需求。m m元素表示文本被“加上标志”,...

    豌豆框架0.6 - 支持分层敏捷开发的PHP框架

    传统页面, 可以直接访问传统的PHP页面, HTML页面, 图片, 脚本等等文件. 单一入口, 可以在入口程序中设置框架环境. 调试, 支持更详细的错误/异常提供, 支持提示环境中的一些信息. XML格式的配置文件, 使配置更直观, ...

    ASP.NET的网页代码模型及生命周期

    当创建对象完成,生成创建对象后的代码并生成一个ASPX页面代码,该页面代码反馈给IIS,IIS再反馈成HTML页面的形式给客户端。 4.3 代码隐藏页模型的事件驱动处理 在传统的ASP开发中,ASP的事件都是按照网页的顺序来...

    HTML开发王

    5.1.3 其他的短语元素(dfn、code、samp、kbd、var) 5.1.4 引用(blockquote元素、q元素) 5.1.5 下标和上标(sub元素、sup元素) 5.2 行和段落 5.2.1 段落(p元素) 5.2.2 控制换行(br元素) 5.2.3 连字符 5.2.4 预格式化...

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    15.4 局部页面缓存 15.4.1 VaryByControl 15.4.2 共享缓存控件 15.5 总结 第16章 主题和母版页 16.1 层叠样式表 16.1.1 创建样式表 16.1.2 应用样式表规则 16.2 主题 16.2.1 主题文件夹和外观 ...

    2.ASP.NET.2.0.高级编程(第4版) [1/7]

    ASP.NET允许Web站点为每个访问者显示独一无二的页面,而不是显示相同的静态HTML页面。ASP.NET 2.0的发布,使Web应用程序的开发又前进了一大步。这个新版本增加了大量的新功能,减少了编写常见应用程序所需的代码...

    ASP.NET2.0高级编程(第4版)1/6

    3.7.1 \\App_Code文件夹66 3.7.2 \\App_Data文件夹70 3.7.3 \\App_Themes文件夹70 3.7.4 \\App_GlobalResources  文件夹71 3.7.5 \\App_LocalResources  文件夹74 3.7.6 \\App_WebReferences  文件夹74 3.7.7 \\...

    ASP.NET4高级程序设计(第4版) 3/3

    15.4 局部页面缓存 534 15.4.1 VaryByControl 535 15.4.2 共享缓存控件 536 15.5 总结 537 第16章 主题和母版页 538 16.1 层叠样式表 538 16.1.1 创建样式表 538 16.1.2 应用样式表规则 540 16.2 ...

    asp.net技术内幕(1)

    17.2 使用页面分段缓存 17.2.1 按参数改变页面分段缓存 17.2.2 页面分段缓存的限制 17.3 使用页面数据缓存 17.3.1 在缓存中添加条目 17.3.2 添加缓存文件依赖性 17.3.3 添加缓存触发器...

    asp.net技术内幕(2)

    17.2 使用页面分段缓存 17.2.1 按参数改变页面分段缓存 17.2.2 页面分段缓存的限制 17.3 使用页面数据缓存 17.3.1 在缓存中添加条目 17.3.2 添加缓存文件依赖性 17.3.3 添加缓存触发器...

    asp.net技术内幕(5)

    17.2 使用页面分段缓存 17.2.1 按参数改变页面分段缓存 17.2.2 页面分段缓存的限制 17.3 使用页面数据缓存 17.3.1 在缓存中添加条目 17.3.2 添加缓存文件依赖性 17.3.3 添加缓存触发器...

    asp.net技术内幕(4)

    17.2 使用页面分段缓存 17.2.1 按参数改变页面分段缓存 17.2.2 页面分段缓存的限制 17.3 使用页面数据缓存 17.3.1 在缓存中添加条目 17.3.2 添加缓存文件依赖性 17.3.3 添加缓存触发器...

    asp.net技术内幕(3)

    17.2 使用页面分段缓存 17.2.1 按参数改变页面分段缓存 17.2.2 页面分段缓存的限制 17.3 使用页面数据缓存 17.3.1 在缓存中添加条目 17.3.2 添加缓存文件依赖性 17.3.3 添加缓存触发器...

Global site tag (gtag.js) - Google Analytics