html 的 HTTP 协议头信息中控制着页面在几个地方的缓存信息, 包括浏览器端, 中间缓存服务器端 (如: squid 等),web 服务器端. 本文讨论头信息 中带缓存控制信息的 HTML 页面(JSP/Servlet 生成好出来的也是 HTML 页面) 在中间缓存服务器中的缓存情况.
HTTP 协议中关于缓存的信息头关键字包括 Cache-Control(HTTP1.1),Pragma(HTTP1.0),last-Modified,Expires 等.
(推荐学习: HTML 视频教程 https://www.html.cn/html/ )
HTTP1.0 中通过 Pragma 控制页面缓存, 可以设置: Pragma 或 no-cache. 网上有非常多的文章说明如何控制不让浏览器或中间缓存服务器缓存页面, 通常设置的值为 no-cache, 不过这个值不这么保险, 通常还加上 Expires 置为 0 来达到目的. 但是如我们刻意需要浏览器或缓存服务器缓存住我们的页面这个值则要设置为 Pragma.
HTTP1.1 中启用 Cache-Control 来控制页面的缓存与否, 这里介绍几个常用的参数:
• no-cache, 浏览器和缓存服务器都不应该缓存页面信息;
• public, 浏览器和缓存服务器都可以缓存页面信息;
• no-store, 请求和响应的信息都不应该被存储在对方的磁盘系统中;
• must-revalidate, 对于客户机的每次请求, 代理服务器必须想服务器验证缓存是否过时;
Last-Modified 指页面的最后生成时间, GMT 格式;
Expires 过时期限值, GMT 格式, 指浏览器或缓存服务器在该时间点后必须从真正的服务器中获取新的页面信息;
页面缓存的问题可能大家都遇到过, 很多功能做完没起效果, 这里给出我的使用的解决方法
对于一个 HTML 页面, 缓存分 3 部分, 一个是页面内容, 一个是 CSS 样式, 一个是 JS 文件
1,HTML 页面内容
- <meta http-equiv="Expires" content="0">
- <meta http-equiv="Pragma" content="no-cache">
- <meta http-equiv="Cache-control" content="no-cache">
- <meta http-equiv="Cache" content="no-cache">
2,CSS 和 JS 文件
- <link rel="stylesheet" href="../css/register.css" />
- <script src="../scripts/register.js">
- </script>
改成
- <link rel="stylesheet" href="../css/register.css?v=20161020" />
- <script src="../scripts/register.js?v=20161020">
- </script>
就是只要在每次修改后改一下版本号即可.
来源: http://www.css88.com/qa/html5/14448.html