欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

JavaWeb禁止浏览器缓存当前Web页面的方法

程序员文章站 2023-12-14 13:39:22
所谓浏览器缓存,是指当第一次访问网页时,浏览器会将这些网页缓存到本地,当下一次再访问这些被缓存的网页时,浏览器就会直接从本地读取这些网页的内容,而无需再从网络上获取。 &...

所谓浏览器缓存,是指当第一次访问网页时,浏览器会将这些网页缓存到本地,当下一次再访问这些被缓存的网页时,浏览器就会直接从本地读取这些网页的内容,而无需再从网络上获取。

        虽然浏览器提供的缓存功能可以有效地提高网页的装载速度,但对于某些需要实时更新的网页,这种缓存机制就会影响网页的正常显示。幸好在http响应消息头中提供了三个字段可以关闭客户端浏览器的缓存功能。下面三条语句分别使用这三个字段来关闭浏览器的缓存:

response.setdateheader("expires", 0);
response.setheader("cache-control", "no-cache");
response.setheader("pragma", "no-cache");

        虽然上面三个http响应消息头字段都可以关闭浏览器缓存。但并不是所有的浏览器都支持这三个响应消息头字段,因此,最好同时使用上面这三个响应消息头字段来关闭浏览器的缓存。

例子 : 禁止浏览器缓存当前web页面

1.  实例说明

本程序演示了在未关闭浏览器缓存和关闭浏览器缓存两种情况下,通过form提交请求消息时的表现。

2.  编写cache类

在cache类中同时使用上述的三个响应消息头字段关闭了浏览器缓存,并向客户端输出一段html代码,以测试关闭缓存和未关闭缓存的效果。cache类的实现代码如下:

public class cache extends httpservlet
{
  public void service(httpservletrequest request, httpservletresponse response)
      throws servletexception, ioexception
  {
    response.setcontenttype("text/html;charset=utf-8");
    string cache = request.getparameter("cache");
    if (cache != null)
    {
      if (cache.equals("false"))
      {
        // 关闭浏览器缓存
        response.setdateheader("expires", 0);
        response.setheader("cache-control", "no-cache");
        response.setheader("pragma", "no-cache");
      }
    }
    // 定义html代码 
    string html = "<form id = 'form', action='test' method='post'>"
        + "姓名:<input type='text' name = 'name'/>"
        + "<input type='submit' value='提交' />" + "</form>";
    printwriter out = response.getwriter();
    out.println(html);     // 向客户端输出html代码
  }
}

从上面的代码可以看出,当cache请求参数值为false时关闭浏览器的缓存。

3.  配置cache类

cache类的配置代码如下:

<servlet>
  <servlet-name>cache</servlet-name>
  <servlet-class>chapter5.cache</servlet-class>
</servlet>
<servlet-mapping>
  <servlet-name>cache</servlet-name>
  <url-pattern>/cache</url-pattern>
</servlet-mapping>

4.  测试未关闭浏览器缓存的情况

在浏览器地址栏中输入如下的url:

http://localhost:8080/demo/cache?cache=true

        在【姓名】文本框中输入任意字符串,点击【提交】按钮,这时浏览器会显示一个异常(这个异常是由于所提交的test不存在而产生的,我们不用去管它),然后点击浏览器的返回按钮回到刚才输入数据的页面。我们可以看到,刚才输入的字符串仍然存在。这说明在返回时,浏览器并未从服务端重新获得这个页面,而是从本地的缓存里重新加载了当前的页面。    

5.  测试关闭浏览器缓存的情况

在浏览器地址栏中输入如下的url来关闭浏览器缓存:

http://localhost:8080/demo/cache?cache=false

        按着上一步的方式提交并返回,发现刚才输入的数据没有了。这说明在关闭浏览器缓存后,每次返回时,浏览器总会从服务端重新获得当前页面。因此,当前页面总是保持着初始值。

6.  程序总结

        在关闭浏览器缓存时,为了尽可能保证在大多数浏览器中都有效,我建议同时使用上述三个http响应消息头字段来关闭浏览器缓存。

总结

以上所述是小编给大家介绍的javaweb禁止浏览器缓存当前web页面的方法,希望对大家有所帮助

上一篇:

下一篇: