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页面。
相关推荐
3. **HTML与CSS、JS文件分开**:将样式表和脚本文件独立于HTML文档,便于缓存管理和更新,同时有助于提升页面渲染性能。 4. **使用CDN(Content Delivery Network)**:CDN可以缓存静态资源,并根据用户地理位置提供...
静态页面技术利用了PHP的输出控制函数来生成HTML文件,以提高网站的加载速度。例如,通过`ob_start()`开启缓冲区,将整个PHP页面的输出保存到变量中,然后使用`ob_get_contents()`获取缓冲区的内容,最后写入到HTML...
本文将深入探讨如何构建一个通用的WebView,包括自定义错误页面、缓存数据以及支持离线浏览的功能。 一、自定义错误页面 在使用WebView加载网页时,可能会遇到网络错误、404找不到页面等问题。默认情况下,WebView...
本篇文章将深入探讨如何使用 `localStorage` 来缓存JavaScript文件,从而提高页面加载速度,减少网络请求,提升用户体验。 `localStorage` 提供了一个持久化的存储空间,最大容量约为5MB,不同域之间是隔离的,保证...
5. **优化WebView性能**:为了提高用户体验,可以开启缓存、设置加载进度条、禁用缩放等功能。例如: ```java webViewAbout.getSettings().setCacheMode(WebSettings.LOAD_CACHE_ELSE_NETWORK); webViewAbout....
1. 开发工具:使用Visual Studio Code、Sublime Text等代码编辑器,它们支持HTML5语法高亮和自动完成。 2. 调试:Chrome DevTools和Firefox Developer Tools提供强大的移动设备模拟和调试功能。 3. 测试:利用...
结合 Laravel 的 Blade 模板系统,你可以动态地在页面上生成多个 Codemirror 实例,或者根据后端返回的数据动态配置编辑器。例如,你可能需要根据用户的选择动态切换编辑器的语言模式。 8. **优化与性能** 为了...
2. **Action Cache**:针对特定控制器操作进行缓存,提高部分页面的加载速度。 3. **Fragment Cache**:局部缓存视图的一部分,适用于复杂视图中的静态部分。 4. **Data Cache**:缓存业务逻辑层的数据,减少数据库...
这里的"ajax经典代码,html+javascript的code"指的是使用HTML、JavaScript和Ajax技术实现的一些常见功能的示例代码。以下是对这些知识点的详细说明: 1. **Ajax基础**: Ajax的核心是通过JavaScript创建...
此外,书中可能还会讨论到关于页面优化和性能提升的方法,如减少HTTP请求、压缩资源和使用缓存策略等。 通过阅读《Web编程入门经典:HTML、XHTML和CSScode》,初学者不仅可以建立起坚实的Web开发基础,还能培养解决...
每个源代码文件都可能包含特定的实现,如错误处理、缓存策略、用户界面设计等,这些都是成为熟练ASP.NET开发者的必备技能。此外,这些实例还可以帮助你更好地掌握调试技巧,了解如何组织和优化代码,以及如何与其他...
例如,使用`$_GET`或`$_POST`来接收表单数据,用`header()`函数控制页面重定向。 **数据库连接**:PHP提供了多种数据库扩展,如mysqli和PDO,用于连接和操作数据库。例如,用mysqli建立连接: ```php $servername ...
在code5.2中,可能有.min.js或.min.css文件,这是经过压缩和优化的文件,以加快页面加载速度。学习者应了解如何利用工具如Webpack或Gulp进行资源管理和优化。 总之,"Web前端开发案例教程-code.rar"提供了全面的...
ASP.NET Cache 是一个用于存储数据的内存区域,这些数据可以是任何类型,如 HTML 页面、数据库查询结果或用户界面元素等。它有助于减少重复计算和数据库访问,从而提高 Web 应用程序的性能和响应速度。 ### 2. ASP...
【VS 2010 SharePoint Code Sample】是一个包含MSDN提供的101个示例的集合,这些示例专门针对C#语言开发的SharePoint应用。这个资源为开发者提供了丰富的学习材料,帮助他们掌握在SharePoint 2010环境中进行高效开发...
在IT行业中,将HTML页面转换为图片是一种常见的需求,例如为了网页预览、保存或分享。Java作为一种广泛使用的编程语言,提供了多种方法来实现这一功能。以下是一篇关于如何使用Java将HTML转换为图片的详细解释。 ...
在实际应用中,我们还需要考虑性能优化,比如使用缓存、避免不必要的DOM操作、合并请求等。此外,`$.ajaxStart()`和`$.ajaxStop()`可以用来监听所有AJAX请求的开始和结束,以执行相应的动画效果,提升用户体验。 ...
2. 性能优化:减小HTTP请求、压缩文件、缓存利用、懒加载图片等策略可提升页面加载速度。 3. SEO优化:合理使用HTML元标签、创建XML Sitemap、优化URL结构等有助于搜索引擎抓取和排名。 5. 可访问性:遵循WCAG...
在生成静态页面时,可能利用缓存机制先将动态内容缓存,然后在需要时快速生成静态HTML。 7. **文件操作**: 生成静态页面涉及到文件的读写操作,可能用到了System.IO命名空间下的类,如FileInfo、FileStream等,来...