一、概述
缓存的思想可以应用在软件分层的各个层面。它是一种内部机制,对外界而言,是不可感知的。
数据库本身有缓存,持久层也可以缓存。(比如:hibernate,还分1级和2级缓存) 业务层也可以有缓存(但一般来说,这是一个过程域,不会设缓存)。
表现层/数据服务层(传统web的表现层)也可以设置缓存(jsp cache 就是这一层,实现在app server上的缓存机制)
另外Browser也有缓存(如IE)这个大家也都知道(实现在 web server 上的缓存机制)。越上层的缓存效果越好,越底层的缓存影响越深远。
二、缓存实现(浏览器缓存当前访问的JSP动态页面)
(一)、服务端方法:
<%
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", -10);
%>
(二)、客户端方法:
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页面。
三、缓存应用
(一)、防止JSP页面缓存.为了防止浏览器缓存当前访问的JSP动态页面,可以采用如下的方式进行设置:
<%
// 将过期日期设置为一个过去时间
response.setHeader("Expires", "Sat, 6 May 1995 12:00:00 GMT");
// 设置 HTTP/1.1 no-cache 头
response.setHeader("Cache-Control", "no-store,no-cache,must-revalidate");
// 设置 IE 扩展 HTTP/1.1 no-cache headers, 用户自己添加
response.addHeader("Cache-Control", "post-check=0, pre-check=0");
// 设置标准 HTTP/1.0 no-cache header.
response.setHeader("Pragma", "no-cache");
%>
当然,每一个页面都包含这些代码会很繁琐,可以通过自定义过滤器(Filter)的方法来处理相关的页面
(二)、jsp,html 清除页面缓存
1.禁止客户端缓存要在<head>中加入类似如下内容:
<META HTTP-EQUIV="pragma" CONTENT="no-cache">
<META HTTP-EQUIV="Cache-Control" CONTENT="no-cache, must-revalidate">
<META HTTP-EQUIV="expires" CONTENT="Wed, 26 Feb 1997 08:21:57 GMT">
或 <meta http-equiv="pragma" content="no-cache">
<meta http-equiv="cache-control" content="no-cache">
<meta http-equiv="expires" content="0">
2.在服务器的动态网页中禁止缓存,要加入类似如下脚本
response.setHeader("Pragma","No-cache");
response.setHeader("Cache-Control","no-cache");
response.setDateHeader("Expires", 0);
(三)设置有限时间的缓存
int minutes = 10;
Date d = new Date();
String modDate = d.toGMTString();
String expDate = null;
expDate = (new Date(d.getTime() + minutes * 60000)).toGMTString();
response.setHeader("Last-Modified", modDate);
response.setHeader("Expires", expDate);
response.setHeader("Cache-Control", "public"); // HTTP/1.1
response.setHeader("Pragma", "Pragma"); // HTTP/1.0
补充:关于.jsp cache的几条建议:
1.jsp cache最好做在过滤器上,把需要缓冲的页面集中在同一个目录下,每次更改只须更改web.xml就可以完成缓冲设置,这样比较方便.
2.Gzip压缩可以将页面压缩得很小,平均压缩比为1/3,jsp cache的HashMap缓冲压缩后的页面,肯定比没压缩前更节约内存消耗,并且效率更高.关于Gzip可以参考这个开源项目:http://sourceforge.net/projects/pjl-comp-filter
相关推荐
### JSP 页面缓存及其清除方法详解 #### 一、JSP页面缓存的重要性与应用场景 JSP(Java Server Pages)技术是一种结合了HTML、XML和Java编程的技术,用于创建动态网页。在JSP开发中,页面缓存是一种常用的技术手段...
本文将深入探讨页面缓存的工作原理、如何在C#中实现页面缓存以及清除页面缓存的方法。 首先,我们需要了解ASP.NET中的两种主要缓存策略:输出缓存和数据缓存。输出缓存会保存完整的HTML页面,而数据缓存则用于存储...
本资源包提供了关于"web项目页面缓存清除"的操作手册和相关资源,帮助开发者解决因缓存导致的问题,确保用户每次都能看到最新的网页内容,而无需手动刷新浏览器。以下是一些关键知识点: 1. **HTTP缓存机制**:HTTP...
网页缓存清除及页面刷新与关闭 知识点1: 网页缓存的概念 网页缓存是指浏览器将访问过的网页保存到本地缓存中,以便下次访问时可以快速加载。缓存可以分为两种:强制缓存和协商缓存。强制缓存是指浏览器在访问网页...
接下来,我们需要编写`background.js`文件,这是扩展的背景脚本,负责执行实际的缓存清除操作。Chrome提供了`chrome.browsingData.remove` API来清除各种浏览数据,包括缓存。以下是示例代码: ```javascript ...
输出缓存主要用于缓存页面的一部分或全部输出;而数据缓存则用于缓存应用程序中的数据对象。 #### 2. ASP.NET中的数据缓存 在ASP.NET中,数据缓存是通过`System.Web.Caching.Cache`类来实现的。这个类提供了一系列...
清除IE缓存的目的是释放磁盘空间,防止个人信息泄露,尤其是当用户在公共设备上浏览网页或者出于隐私考虑时。清除Cookies可能会导致用户需要重新登录某些网站,但能保护个人隐私。 易语言实现这个功能,通常会涉及...
在日常的网络使用中,缓存机制是一种优化访问速度的技术,但有时可能会导致访问问题,如旧的DNS或Socket缓存可能导致网页加载错误或者访问不到最新的数据。本篇将详细介绍如何在Windows系统中清除DNS缓存,以及在...
1. **缓存的作用**:缓存的主要目的是优化性能,当用户首次打开一个应用或访问一个网页时,相关数据会被保存在本地,下次访问时可直接从缓存读取,减少加载时间。 2. **缓存的类型**:Android应用中的缓存通常分为...
- 时间驱动:设置缓存过期时间,超过这个时间自动清除。 - 命中率驱动:根据缓存命中率动态调整缓存大小。 - 容量驱动:当缓存达到预设大小时,采用LRU(Least Recently Used)或LFU(Least Frequently Used)等...
### 如何清除Tomcat缓存 在Web开发中,Tomcat服务器因其轻量级、高效能及开源等特性被广泛采用。然而,在部署或更新应用的过程中,有时会遇到因缓存导致的问题,如新发布的代码未能立即生效。因此,学会如何有效地...
消除浏览器的301重定向缓存 浏览器的301重定向缓存是一种常见的问题,当用户输入特定的URL时,浏览器会自动重定向到另一个URL,而不管用户的意图是什么。这是因为浏览器会缓存301重定向的结果,以便加快网页的加载...
标题中的“倒计时清除及手工清除IE的缓存”涉及到的是互联网浏览器Internet Explorer(简称IE)的缓存管理技术。缓存是浏览器为了提高网页加载速度,将经常访问的网页内容存储在本地的一种机制。当用户再次访问相同...
`clearHistory()` 清除浏览历史,`clearCache(true)` 清除所有缓存,包括磁盘缓存。 五、离线模式下的WebView 在离线模式下,可以通过设置 `WebView` 的缓存模式为 `LOAD_CACHE_ONLY`,使其只从本地缓存加载网页:...
这个"OC清除缓存Demo"项目可能包含了一个简单的实现,演示了如何根据特定的策略(如文件大小、创建日期等)来清除这些磁盘缓存文件。开发者可能还会添加一个定时任务,定期执行清理操作,以保持缓存的合理大小。 ...
本文将深入探讨Vue中的`<keep-alive>`缓存清除问题及其解决方案。 首先,我们来讨论一下常见的错误做法。一种常见的错误尝试是通过`v-if`和`v-else`来决定是否缓存组件: ```html ``` 这种做法实际上创建...
缓存是指浏览器在访问网页时,临时存储的一些静态资源,如图像、样式表、JavaScript 文件等,以便快速访问这些资源。 在清除缓存之前,我们需要了解缓存的结构。缓存由多个缓存条目组成,每个缓存条目包含了缓存的...
例如,图片、网页内容和数据库查询结果可能会被缓存。然而,随着时间的推移,缓存可能会占用大量存储空间,甚至导致应用运行缓慢。因此,提供一个清除缓存的选项对于用户来说是必要的。 1. **文件缓存**:Android...
本篇主要探讨WebView页面缓存的实现和优化,这对于提升用户体验和减少网络请求至关重要。 一、WebView缓存原理 iOS中的WebView主要由UIWebView(在iOS 8后被WKWebView取代)负责加载和渲染网页。当用户访问一个网页...
页面缓存是指将频繁访问的网页内容存储在内存中,当用户请求这些页面时,不再需要重新生成或者从数据库查询数据,而是直接从缓存中读取,从而提高了响应速度。OSCache提供了一套完整的解决方案,包括缓存的创建、...