首页 > 新闻系统 > 编程天地 > 文章正文

J2EE:web开发中的缓存问题的研究

2008-01-21 11:10:02 来源:ITPUB论坛 作者: 点击:
一般情况下,浏览器都会缓存已经访问过的页面内容,关于如何禁止浏览器缓存的介绍,在网上到处都有相关的文章,但是,关于浏览器如何利用缓存,如何处理缓存的讲解,却鲜有人谈及.

信效率。

  HttpServlet类为If-Modified-Since请求头和Last-Modified头字段的这种应用提供了处理机制,当继承了HttpServlet类的Servlet程序接收到一个GET方式的访问请求时,HttpServlet中重载的service方法在调用doGet方法之前,它还将调用getLastModified方法,并根据getLastModified方法的返回值来决定是否调用doGet方法和在响应消息中是否生成Last-Modified头字段,具体规则如下:

  当getLastModified方法返回一个负数时,不管请求消息中的情况怎样,service方法都将直接调用doGet方法来生成响应内容,这正是HTTPServlet类中定义的getLastModified方法的行为;

  当getLastModified方法返回一个正数,且请求消息中没有包含If-Modified-Since请求头时(这往往出现在第对某个资源的第一次访问时),或者请求消息中包含的If-Modified-Since请求头中的时间值比getLastModified方法返回的时间值旧时,service方法将根据getLastModified方法的返回值生成一个Last-Modified头字段,然后调用doGet方法生成响应内容;

  当getLastModified方法返回一个正数时,且请求消息中包含的If-Modified-Since请求头中的时间值比getLastModified方法返回的时间值新或者与之相同时,service方法将不调用doGet方法,而是向浏览器返回一个304(Not Modified)状态码表示浏览器可以使用其以前缓存的内容。

  动手体验:揭开浏览器缓存的奥秘

  (1)编写一个名为CacheServlet的Servlet程序,在其doGet方法中向浏览器和Tomcat的命令行窗口中都打印出当前的时间值,getLastModified方法也是向Tomcat的命令行窗口中打印出当前的时间值和返回当前时间值,这里先将getLastModified方法注释掉,如例程4-9所示。

  例程4-9 CacheServlet.java
  
   import java.io. * ;
  import javax.servlet.
* ;
  import javax.servlet.http.
* ;
  
public class CacheServlet extends HttpServlet
  {
  
public void doGet(HttpServletRequest request,
  HttpServletResponse response) throws ServletException, IOException
  {
  PrintWriter
out = response.getWriter();
  
long now = System.currentTimeMillis();
  
out .println( " doGet: " + now);
  System.
out .println( " doGet: " + now);
  }
  
/* protected long getLastModified(HttpServletRequest req)
  {
  long now = System.currentTimeMillis();
  System.out.println("getLastModified:" + now);
  return now;
  }
*/
  }
  
  编译CacheServlet.java文件,确保编译后生成的class文件放置进了d:\myweb\WEB-INF\classes目录中。

  (2)在d:\myweb目录中编写一个名称为CacheTest.html的网页文件,如例程4-10所示。

  例程4-10 CacheTest.html

  缓存测试

  (3)为了便于查看浏览器如何生成缓存内容,最好是先删除掉Internet临时文件夹中保存的所有缓存内容。单击IE浏览器的“工具”“Internet选项”菜单,打开如图4.16所示的“Internet选项”对话框,接着再单击“常规”选项卡中的“Internet临时文件”栏中的“删除文件”按钮,这就删除了Internet临时文件夹中保存的所有缓存内容。单击“常规”选项卡中的“Internet临时文件”栏中的“设置”按钮,在打开的“设置”对话框框中单击“Internet临时文件夹”栏中的“查看文

9 7 3 1 2 3 4 4 8 :

精彩推荐
焦点大图推荐
本类热门文章

论坛美图

本周软件下载排行

广告联系 | 版权说明 | 意见建议 | 加入收藏 | 军网站群 [ 军软件园 - 军软件商城 - 军软件园论坛 ]

电信与信息服务业务经营许可证:京ICP证050203