转:http://www.cnblogs.com/liuling/p/2013-7-25-01.html
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页面。
相关推荐
首先,页面缓存主要通过HTTP协议头信息来控制。HTTP1.0使用`Pragma`字段,而在HTTP1.1中,`Cache-Control`字段成为了更强大的控制工具。以下是一些关键的HTTP头字段: 1. **Pragma**: 在HTTP1.0中,`Pragma:no-...
#### 知识点一:页面缓存的概念与作用 页面缓存(Page Caching)是Web开发中一种重要的优化技术,主要用于提高网站性能和响应速度。通过将页面的HTML输出存储在服务器端的缓存中,当用户请求相同的页面时,服务器...
上述代码设置了页面缓存有效期为60秒,缓存位置为服务器,并且根据所有参数进行缓存差异化。 2. **数据缓存**:数据缓存则更为灵活,可以缓存任何对象。我们可以使用`HttpRuntime.Cache`对象来存储和检索数据。例如...
使用 Redis 实现页面缓存 本文档主要介绍了使用 Redis 实现页面缓存的方法,包括缓存 key 的设计、缓存实现的思路和代码实现。 页面缓存的目的:页面缓存的主要目的是为了提高网站的访问速度和用户体验。通过将...
#### 一、JSP页面缓存的重要性与应用场景 JSP(Java Server Pages)技术是一种结合了HTML、XML和Java编程的技术,用于创建动态网页。在JSP开发中,页面缓存是一种常用的技术手段,能够显著提升用户的访问速度并减轻...
Http 页面缓存机制 Http 页面缓存机制是 Web 2.0 应用程序中性能改善的关键要素之一。浏览器端缓存机制可以显著地改善用户体验,减少浏览器端性能问题。浏览器缓存机制可以分为两类:服务器端缓存和浏览器端缓存。...
页面缓存处理是提高Web应用性能的关键策略,它能够减少服务器压力,加快用户访问速度。本文档主要讨论了如何处理页面缓存,确保前端逻辑和资源更新后立即生效,无需额外操作。 首先,我们来看前端处理方案。在HTML...
ehcache页面缓存技术ehcache页面缓存技术ehcache页面缓存技术ehcache页面缓存技术ehcache页面缓存技术ehcache页面缓存技术ehcache页面缓存技术ehcache页面缓存技术ehcache页面缓存技术ehcache页面缓存技术ehcache...
在Web开发中,页面缓存是一个重要的概念,它涉及到用户浏览网页时的性能优化和更新体验。当浏览器加载一个网页后,为了加快后续访问速度,会将页面的静态资源(如HTML、CSS、JavaScript文件、图片等)存储在本地缓存...
下面将详细介绍SpringMVC与Ehcache集成后的各级缓存机制以及页面缓存的实现。 1. SpringMVC简介: SpringMVC是Spring框架的一部分,它是一个用于构建Web应用的模型-视图-控制器(MVC)架构。通过SpringMVC,开发者...
页面缓存是优化Web应用程序性能的关键技术之一,它通过存储常用的网页或数据在服务器的内存中,减少对数据库的访问,从而大大提高响应速度。在这个小测试中,我们将探讨页面缓存的基本概念,以及如何利用开源工具...
在IT行业中,尤其是在Web开发领域,页面缓存是一种优化网站性能的重要技术。当我们谈论"jsp 页面缓存"时,我们指的是在JSP(JavaServer Pages)应用中利用缓存策略来提升网页加载速度和减少服务器负载。JSP是Java...
LRU(Least Recently Used)页面缓存是一种常用的内存管理策略,尤其在计算机系统和数据库管理系统中,用于优化数据访问效率。LRU的基本思想是:当内存空间有限时,最近最少使用的数据应该首先被淘汰。在磁盘环境下...
总结来说,PHP文件页面缓存类是通过将页面内容或数据存储到本地文件,实现数据的快速访问和复用,从而提高应用程序的性能。通过合理设计和使用这样的缓存类,开发者可以有效地优化网站的响应速度,降低服务器压力,...
缓存问题解决方案和设置缓存方法 缓存是Web开发中一个常见的问题,它可以极大地影响网站的性能和用户体验。因此,解决缓存问题和设置缓存是非常重要的。在这篇文章中,我们将讨论如何解决缓存问题和设置缓存。 ...
在Web开发中,页面缓存是提高网站性能的重要手段之一。但是,在某些情况下,为了确保用户看到的是最新的数据或页面状态,我们需要禁用页面缓存。本文将详细介绍如何通过PHP代码来实现页面缓存的禁止。 #### 一、...
### ASP.NET中的Web页面缓存技术探讨 #### 引言 在现代Web开发中,缓存技术对于提高网站性能和用户体验至关重要。ASP.NET作为一种广泛使用的Web开发框架,提供了丰富的缓存选项来帮助开发者优化应用程序的运行效率...
在负载测试中,正确配置浏览器缓存能帮助我们更好地模拟真实的用户行为,例如,当用户返回已访问过的页面时,浏览器通常会从缓存中加载资源,而不是重新从服务器请求。 在LoadRunner中,我们可以使用Vuser脚本来...
很多朋友都会碰到这样的情况:如果我们页面加载了js的话下次打开时也会是调用这个js缓存文件,但对于我们调试时是非常的不方便了,本文就来谈论如何解决这一问题,下面一起来看看。 不缓存JS的方法其实挺简单,CSS在...
OSCache虽然不直接支持分布式缓存,但可以通过与其他分布式缓存服务(如Redis、Memcached)结合使用来实现。 总结起来,OSCache作为一款强大的缓存工具,为Java开发者提供了便捷的页面缓存功能。通过合理配置和编程...