《HTML清除浏览器缓存》由会员分享,可在线阅读,更多相关《HTML清除浏览器缓存(7页珍藏版)》请在金锄头文库上搜索。
1、JSP 页面缓存技术浏览器缓存 一、概述 缓存的思想可以应用在软件分层的各个层面。它是一种内部机制,对外界而言,是不可感知的。 数据库本身有缓存,持久层也可以缓存。 (比如:hibernate,还分 1 级和 2 级缓存) 业务层也可以有缓存(但一般来说,这是一个过程域,不会设缓存) 。 表现层/数据服务层(传统 web 的表现层)也可以设置缓存(jsp cache 就是这一层,实现在 app server 上的缓存机制) 另外 Browser 也有缓存(如 IE)这个大家也都知道(实现在 web server 上的缓存机制)。越上层的缓存效果越好,越底层的缓存影响越深远。 二、缓存实现(浏览
2、器缓存当前访问的 JSP 动态页面) (一) 、服务端方法: (二) 、客户端方法:meta 是用来在 HTML 文档中模拟 HTTP 协议的响应头报文。meta 标签用于网页的head与/head 中,meta 标签的用处很多。meta 的属性有两种:name 和 http-equiv。name属性主要用于描述网页,对应于 content(网页内容) ,以便于搜索引擎机器人查找、分类(目前几乎所有的搜索引擎都使用网上机器人自动查找 meta 值来给网页分类) 。这其中最重要的是 description(站点在搜索引擎上的描述)和 keywords(分类关键词) ,所以应该给每页加一个 met
3、a 值。比较常用的有以下几个: 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|nofollo
4、w 其中的属性说明如下: 设定为 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
5、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
6、、meta http-equiv=Pragma contect=no-cache是用于设定禁止浏览器从本地机的缓存中调阅页面内容,设定后一旦离开网页就无法从 Cache 中再调出; 5、meta http-equiv=set-cookie contect=Mon,12 May 2001 00:20:00 GMTcookie 设定,如果网页过期,存盘的 cookie 将被删除。需要注意的也是必须使用 GMT 时间格式; 6、meta http-equiv=Pics-label contect=网页等级评定,在 IE 的 internet 选项中有一项内容设置,可以防止浏览一些受限制的网站,而网站
7、的限制级别就是通过 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 中的“格式/网页
8、过渡” ,不过所加的页面不能够是一个 frame 页面。 三、缓存应用 (一) 、防止 JSP 页面缓存为了防止浏览器缓存当前访问的 JSP 动态页面,可以采用如下的方式进行设置: 当然,每一个页面都包含这些代码会很繁琐,可以通过自定义过滤器(Filter)的方法来处理相关的页面二) 、jsp,html 清除页面缓存 1.禁止客户端缓存要在中加入类似如下内容: 或 2.在服务器的动态网页中禁止缓存,要加入类似如下脚本 response.setHeader(Pragma,No-cache); response.setHeader(Cache-Control,no-cache); response
9、.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.setHea
10、der(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:/ 另外: 浏览器的后
11、退按钮使得我们能够方便地返回以前访问过的页面,它无疑非常有用。但有时候我们不得不关闭这个功能,以 防止用户打乱预定的页面访问次序。本文介绍网络上可找到的各种禁用浏览器后退按钮方案,分析它们各自的优缺点和适 用场合。一、概述 曾经有许多人问起, “怎样才能禁用浏览器的后退按钮? ”,或者“怎样才能防止用户点击后退按钮返回以前浏 览过的页面?”在 ASP 论坛上,这个问题也是问得最多的问题之一。遗憾的是,答案非常简单:我们无法禁用浏览器的后退 按钮。 起先我对于居然有人想要禁用浏览器的后退按钮感到不可思议。后来,看到竟然有那么多的人想要禁用这个后退按 钮,我也就释然(想要禁用的只有后退按钮,不包括
12、浏览器的前进按钮) 。因为在默认情况下,用户提交表单之后可以通 过后退按钮返回表单页面(而不是使用“编辑”按钮!) ,然后再次编辑并提交表单向数据库插入新的记录。这是我们不 愿看到的。 因此我就决定要找出避免出现这种情况的方法。我访问了许多网站,参考了这些网站所介绍的各种实现方法。如果你 经常访问 ASP 编程网站,本文所介绍的部分内容你可能已经见到过。本文的任务是把各种可能的方法都介绍给大家,然后找 出最好的方法!二、禁止缓存 在我找到的许多方案中,其中有一种建议禁止页面缓存。具体是使用服务器端脚本,如下所示: 这种方法非常有效!它强制浏览器重新访问服务器下载页面,而不是从缓存读取页面。使用
13、这种方法时,编程者的主 要任务是创建一个会话级的变量,通过这个变量确定用户是否仍旧可以查看那个不适合通过后退按钮访问的页面。由于浏 览器不再缓存这个页面,当用户点击后退按钮时浏览器将重新下载该页面,此时程序就可以检查那个会话变量,看看是否 应该允许用户打开这个页面。例如,假设我们有如下表单: 0 then &single; 用户已经访问过当前页面,现在是再次返回访问。 &single; 清除会话变量,将用户重定向到登录页面。 Session(FirstTimeToPage) = Response.Redirect /Bar.asp Response.End End If &single; 如果
14、程序运行到这里,说明用户能够查看当前页面 &single; 以下开始创建表单 % 我们借助会话变量 FirstTimeToPage 检查用户是否是第一次访问当前页面。如果不是第一次(即 Session (FirstTimeToPage)包含某个值) ,那么我们就清除会话变量的值,然后把用户重新定向到一个开始页面。这样,当表单 提交时(此时 SompePage.asp 被打开) ,我们必须赋予 FirstTimeToPage 一个值。即,在SomePage.asp 中我们需要加上下面 的代码: Session(FirstTimeToPage) = NO 这样,已经打开 SomePage.asp
15、的用户如果点击后退按钮,浏览器将重新请求服务器下载页面,服务器检查到 Session (FirstTimeToPage)包含了一个值,于是就清除 Session(FirstTimeToPage),并把用户重定向到其他页面。当然,所有 这一切都需要用户启用了 Cookie,否则会话变量将是无效的。 (有关该问题的更多说明,请参见 For session variables to work, must the Web visitor have cookies enabled?)另外,我们也可以用客户端代码使浏览器不再缓存 Web 页面: 如果使用上面的方法强制浏览器不再缓存 Web 页面,必须注意以下几点: 只有在使用安全连接时“Pragma: no-cache”才防止浏览器缓存页面。对于不受安全保护的页面, “Pragma: no-cache” 被视为与“Expires: -1”相同,此时浏览器仍旧缓存页面,但把页面标记为立即过期。 在 IE 4 或 5 中, “Cache-Control”META HTTP-EQUIV 标记将被忽略,不起作用。 在实际应用中我们可以加上所有这些代码。然而,由于这种方法不能适用于所有的浏览器,所以是不推荐使用的。但 如果是在 Intranet 环境下,管理员可以控制用户使用哪种浏览器,我想还是有人