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

虽然浏览器提供的缓存功能可以有效地提高网页的装载速度,但对于某些需要实时更新的网页,这种缓存机制就会影响网页的正常显示。幸好在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 = "

"

+ "姓名:"

+ "" + "

";

PrintWriter out = response.getWriter();

out.println(html); // 向客户端输出HTML代码

}

}

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

3.  配置Cache类

Cache类的配置代码很简单,如下:

Cache

chapter5.Cache

Cache

/Cache

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

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

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

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

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

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

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

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

java 情况浏览器缓存_JavaWeb禁止浏览器缓存当前Web页面的方法相关推荐

  1. java 图形校验_java图形验证码生成工具类 web页面校验验证码

    java图形验证码生成工具类 web页面校验验证码 发布于 2020-7-14| 复制链接 摘记: 最近做验证码,参考网上案例,发现有不少问题,特意进行了修改和完善.验证码生成器: ```java i ...

  2. Java 技术篇 - 从指定的web网页页面中读取html内容实例演示,从http协议下的url地址中读取web页面内容方法

    实例为从我文章中读取标题. 通过 class 属性锁定标题元素,把匹配的内容打印出来. 下面是源码: package com.test.test;import java.io.*; import ja ...

  3. 点击链接,执行.py脚本,cgi脚本,浏览器中没有显示解析后的web页面,而是.py文件本身的代码内容...

    在.py文件中加上这个就好了. print('Content-type:text/html \n\n') 不加这个,有时候啥也不显示. 转载于:https://www.cnblogs.com/gwj9 ...

  4. JAVA识别字符串是数字(英文)还是汉字,web页面进行字符截断的帮助类

    public static void main(String[] args) {//长度是2说明是英文/数字/英文状态下的字符,长度为4说明是汉字/中文状态下的字符String str = " ...

  5. 如何不让浏览器读取html缓存,不让浏览器缓存index.html

    参考文档:https://www.2cto.com/ask/question/4598 location = /index.html { add_header Cache-Control " ...

  6. 浏览器的工作原理:输入URL后,Web页面是如何呈现的?

    重学JavaScript01 ----- 浏览器工作原理 文章目录 重学JavaScript01 ----- 浏览器工作原理 前言 一. 网络模型 应用层: 传输层: TCP协议的运行流程: 网络层: ...

  7. php如何禁用浏览器的缓存,php如何禁止浏览器使用缓存页面

    [摘要] PHP即"超文本预处理器",是一种通用开源脚本语言.PHP是在服务器端执行的脚本语言,与C语言类似,是常用的网站编程语言.PHP独特的语法混合了C.Java.Perl以及 ...

  8. 使用Filter过滤器禁止浏览器缓存页面

    1.概述 IE缓存虽然能提高已储存网站的访问速度,但是过度的IE缓存会影响浏览器的响应速度.同时还可能为网站的运行带来一些不必要的麻烦.例如:可能会因为浏览器缓存的应用,而导致Web服务器不能准确的计 ...

  9. win7怎么清理java缓存文件夹_Win7怎么清除浏览器缓存?清除电脑缓存的妙招

    电脑使用久了之后,缓存文件也将越来越多,慢慢的你会觉得系统变得很卡,所以我们需要定期的清除缓存.而产生缓存的来源,无非就是系统和运用程序,其中应用程序就属浏览器的缓存最多了,那么Win7系统下要怎么清 ...

最新文章

  1. 关于学习Python的一点学习总结(23->while语句与else)
  2. 给演讲增色的10种简单方法
  3. C#中往数据库插入/更新时候关于NUll空值的处理
  4. Spring Framework 5.1.6、5.0.13 与 4.3.23 发布
  5. HTML基础知识(未完待续)
  6. 靠一个不存在的基因,写了学位论文顺利毕业的上交大硕士,被学校撤销了学位!...
  7. spring aop 必须的包 及里面用到的东西_学习Spring的思考框架
  8. Nginx基本数据结构之ngx_chain_t
  9. 在Blazor中构建数据库应用程序——第3部分——UI中的CRUD编辑和查看操作
  10. iOS开发----UI部分----iPhone各类屏幕的分辨率
  11. 周长相等的正方形面积一定相等_三年级下册数学期末重点——面积
  12. Java基础教程(12)--深入理解类
  13. 二分法01:查找一个数
  14. i.MX6ULL终结者Linux RS232/485驱动实验RS232驱动
  15. 【OS】单道程序设计VS多道程序设计
  16. 请告诉孩子:努力读书,是为将来拥有更多选择的权利,而不是被迫谋生
  17. python实现ORC/文字识别之pytesseract
  18. 百度搜索引擎工作原理解读
  19. 为什么word文档或EXCET表格从电脑传到手机上格式就变了
  20. 性格色彩测试android程序开发之五--dialog事件的处理

热门文章

  1. 【算法】剑指 Offer 18. 删除链表的节点
  2. 【Elasticsearch】数据预加载
  3. 【Elasticsearch】估算在 Elasticsearch 中存储文档的成本
  4. 95-30-050-java.util-LinkedHashMap
  5. spark学习-62-Spark:Yarn-cluster和Yarn-client区别与联系
  6. 11-windows下卸载Orcale
  7. Java多线程学习三十九:CAS 有什么缺点?
  8. Java多线程学习十一:你知道哪几种锁?各有什么特点
  9. Oracle查看用户、用户权限、用户表空间、用户默认表空间
  10. VCL组件之重要的公用属性