




已阅读5页,还剩2页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
JSP页面缓存技术浏览器缓存 一、概述 缓存的思想可以应用在软件分层的各个层面。它是一种内部机制,对外界而言,是不可感知的。 数据库本身有缓存,持久层也可以缓存。(比如:hibernate,还分1级和2级缓存) 业务层也可以有缓存(但一般来说,这是一个过程域,不会设缓存)。 表现层/数据服务层(传统web的表现层)也可以设置缓存(jsp cache 就是这一层,实现在app server上的缓存机制) 另外Browser也有缓存(如IE)这个大家也都知道(实现在 web server 上的缓存机制)。越上层的缓存效果越好,越底层的缓存影响越深远。 二、缓存实现(浏览器缓存当前访问的JSP动态页面) (一)、服务端方法: (二)、客户端方法:meta是用来在HTML文档中模拟HTTP协议的响应头报文。meta 标签用于网页的head与/head中,meta 标签的用处很多。meta 的属性有两种: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 GMTcookie设定,如果网页过期,存盘的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动态页面,可以采用如下的方式进行设置: 当然,每一个页面都包含这些代码会很繁琐,可以通过自定义过滤器(Filter)的方法来处理相关的页面二)、jsp,html 清除页面缓存 1.禁止客户端缓存要在中加入类似如下内容: 或 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可以参考这个开源项目:/projects/pjl-comp-filter 另外: 浏览器的后退按钮使得我们能够方便地返回以前访问过的页面,它无疑非常有用。但有时候我们不得不关闭这个功能,以 防止用户打乱预定的页面访问次序。本文介绍网络上可找到的各种禁用浏览器后退按钮方案,分析它们各自的优缺点和适 用场合。一、概述 曾经有许多人问起,“怎样才能禁用浏览器的后退按钮?”,或者“怎样才能防止用户点击后退按钮返回以前浏 览过的页面?”在ASP论坛上,这个问题也是问得最多的问题之一。遗憾的是,答案非常简单:我们无法禁用浏览器的后退 按钮。 起先我对于居然有人想要禁用浏览器的后退按钮感到不可思议。后来,看到竟然有那么多的人想要禁用这个后退按 钮,我也就释然(想要禁用的只有后退按钮,不包括浏览器的前进按钮)。因为在默认情况下,用户提交表单之后可以通 过后退按钮返回表单页面(而不是使用“编辑”按钮!),然后再次编辑并提交表单向数据库插入新的记录。这是我们不 愿看到的。 因此我就决定要找出避免出现这种情况的方法。我访问了许多网站,参考了这些网站所介绍的各种实现方法。如果你 经常访问ASP编程网站,本文所介绍的部分内容你可能已经见到过。本文的任务是把各种可能的方法都介绍给大家,然后找 出最好的方法!二、禁止缓存 在我找到的许多方案中,其中有一种建议禁止页面缓存。具体是使用服务器端脚本,如下所示: 这种方法非常有效!它强制浏览器重新访问服务器下载页面,而不是从缓存读取页面。使用这种方法时,编程者的主 要任务是创建一个会话级的变量,通过这个变量确定用户是否仍旧可以查看那个不适合通过后退按钮访问的页面。由于浏 览器不再缓存这个页面,当用户点击后退按钮时浏览器将重新下载该页面,此时程序就可以检查那个会话变量,看看是否 应该允许用户打开这个页面。 例如,假设我们有如下表单: 0 then &single; 用户已经访问过当前页面,现在是再次返回访问。 &single; 清除会话变量,将用户重定向到登录页面。 Session(FirstTimeToPage) = Response.Redirect /Bar.asp Response.End End If &single; 如果程序运行到这里,说明用户能够查看当前页面 &single; 以下开始创建表单 % 我们借助会话变量FirstTimeToPage检查用户是否是第一次访问当前页面。如果不是第一次(即Session (FirstTimeToPage)包含某个值),那么我们就清除会话变量的值,然后把用户重新定向到一个开始页面。这样,当表单 提交时(此时SompePage.asp被打开),我们必须赋予FirstTimeToPage一个值。即,在SomePage.asp中我们需要加上下面 的代码: Session(FirstTimeToPage) = NO 这样,已经打开SomePage.asp的用户如果点击后退按钮,浏览器将重新请求服务器下载页面,服务器检查到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环境下,管理员可以控制用户使用哪种浏览器,我想还是有人会使用这种方法。三、其他方法 接下来我们要讨论的方法以后退按钮本身为中心,而不是浏览器缓存。这儿有一篇文章Rewiring the Back Button很 值得参考。不过我注意到,如果使用这种方法,虽然用户点击一下后退按钮时他不会看到以前输入数据的页面,但只要点 击两次就可以,这可不是我们希望的效果,因为很多时候,固执的用户总是能够找到绕过预防措施的办法。 另外一种禁用后退按钮的办法是用客户端JavaScript打开一个没有工具条的窗口,这使得用户很难返回前一页面,但 不是不可能。一种更安全但相当恼人的方法是,当表单提交时打开一个新的窗口,与此同时关闭表单所在的窗口。但我觉 得这种方法不值得认真考虑,因为我们总不能让用户每提交一个表单就打开一个新窗口。 那么,在那个我们不想让用户返回的页面是否也可以加入JavaScript代码呢?在这个页面中加入的JavaScript代码可 用来产生点击前进按钮的效果,这样也就抵消了用户点击后退按钮所产生的动作。用于实现该功能的JavaScript代码如下 所示: 同样地,这种方法虽然有效,但距离“最好的方法”还差得很远。后来我又看到有人建议用location.replace从一个 页面转到另一个页面。这种方法的原理是,用新页面的URL替换当前的历史纪录,这样浏览历史记录中就只有一个页面,后 退按钮永远不会变为可用。我想这可能正是许多人所寻求的方法,但这种方法仍旧不是任何情况下的最好方法。使用这种 方法的实例如下所示: 禁止后退到本页面的链接 试试下面这个链接: 禁止后退到本页面的链接! 这种方法的缺点在于:简单地运用Response.Redirect将不再有效,这是因为每次用户从一个页面转到另一个页面, 我们都必须用客户端代码清除location.history。另外还要注意,这种方法清除的是最后一个访问历史记录,而不是全部 的访问记录。 点击上面的链接,你将打开一个简单的HTML页面。再点击后退按钮,你可以看到这时打开的不是本页面,而是本页面 之前的页面!(当然,你必须在浏览器中
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025至2031年中国微型轴承分选装配线行业投资前景及策略咨询研究报告
- 2025至2031年中国平纹毛衣机行业投资前景及策略咨询研究报告
- 2025至2031年中国安肠止泻散行业投资前景及策略咨询研究报告
- 2025至2031年中国园艺工具手柄行业投资前景及策略咨询研究报告
- 2025至2031年中国双环起重吊链行业投资前景及策略咨询研究报告
- 2025至2031年中国卤素导轨灯行业投资前景及策略咨询研究报告
- 2025至2031年中国刺五加软胶囊行业投资前景及策略咨询研究报告
- 印染工程设计在线平台行业深度调研及发展项目商业计划书
- 七年级下册语文教学计划的团队协作
- 小学数学评估与反馈工作计划
- 2024年四川省资中县事业单位公开招聘医疗卫生岗考前冲刺模拟带答案
- 2025年福建省龙岩市中考数学二检试卷
- 2025-2030年全球商业WiFi行业市场调研及投资前景预测报告
- 生猪屠宰管理条例解读与应用
- 结肠癌影像诊断与分期课件
- 生物化学教学研究知识图谱可视化分析
- 小学老师心理健康教育培训
- 正规监控合同协议
- 高中生物2015-2024年10年高考真题专题分类汇编-专题6光合作用考点1捕获光能的色素与结构
- 广东高考:化学必考知识点归纳
- 江苏卷-2025届高考地理4月模拟预测卷(解析版)
评论
0/150
提交评论