1.html是否被浏览器缓存
我有一个基本的HTML页面,没有动态内容。手动更新Occassional更新。但是,我有报道说人们正在看到旧版本的页面。我认为我的页面上的所有“不缓存”标题设置在html文档的部分。为什么我的HTML页面仍然被浏览器缓存?
<meta http-equiv="CACHE-CONTROL" content="NO-CACHE" />
<meta http-equiv="EXPIRES" content="0" />
<META HTTP-EQUIV="PRAGMA" CONTENT="NO-CACHE">
使用HTML meta no-cache标签来禁用缓存
如何完美滴使浏览器访问一个 HTML 页面时禁用缓存? 在测试某个 SPA 项目时,发现更改后 Chrome 浏览器页面刷新还是使用之前的版本。经调查发现 Chrome 默认缓存值为 300 秒。
经测试跨浏览器禁止缓存的 headers 如下: Cache-Control: no-cache, no-store, must-revalidate Pragma: no-cache Expires: 0 Cache-Control is for HTTP 1.1 Pragma is for HTTP 1.0 Expires is for proxies 因为是 HTML 页面,可以于 HEAD 标签内直接添加 META 标签: 其他文件就需要使用服务器设置文件控制 header
==============
如果不想彻底禁止缓存可以采用下面的
<meta http-equiv="cache-control" content="no-cache" />
<meta http-equiv="Pragma" content="no-cache" />
<meta http-equiv="expires" content="0" />
==============
no-cache和no-store的区别: no-cache 可以在本地缓存,可以在代理服务器缓存,但是这个缓存要服务器验证才可以使用 no-store 彻底得禁用缓冲,本地和代理服务器都不缓冲,每次都从服务器获取
在某些情况下,即使Cache-Control: no-cache在响应头文件中,IE6仍然会缓存文件。 W3C状态no-cache: 如果no-cache指令没有指定一个字段名称,那么缓存绝不能使用该响应来满足后续的请求,而不需要对源服务器进行成功的重新验证。
在我的应用程序中,如果访问了带有no-cache标题的页面,然后注销并在浏览器中回放,IE6仍然会从缓存中获取页面(没有向服务器发送新的/验证请求)。在no-store标题中添加停止它这样做。
但是如果你接受W3C的话,实际上没有办法控制这种行为: 历史缓冲区可以将这些响应作为其正常操作的一部分进行存储。 浏览器历史记录和常规HTTP缓存之间的一般差异在规范的特定子部分中描述。
=================
HTML中的Meta标签(no-cache) 根据HTML语言标准注释:meta标签是对网站发展非常重要的标签,它可以用于鉴别作者,设定页面格式,标注内容提要和关键字,以及刷新页面等等。
HTTP-EQUIV类似于HTTP的头部协议,它回应给浏览器一些有用的信息,以帮助正确和精确地显示网页内容。
1.expires(期限) 说明:可以用于设定网页的到期时间。一旦网页过期,必须到服务器上重新调阅。 用法: 注意:必须使用GMT的时间格式。
2.Pragma(cach模式) 说明:禁止浏览器从本地机的缓存中调阅页面内容。 用法: 注意:这样设定,访问者将无法脱机浏览。
3.Refresh(刷新) 说明:需要定时让网页自动链接到其它网页的话,就用这句了。 用法: 注意:其中的5是指停留5秒钟后自动刷新到URL网址。 下面标签作用是20秒自动刷新当前页面:
4.Set-Cookie(cookie设定) 说明:如果网页过期,那么存盘的cookie将被删除。 用法: 注意:必须使用GMT的时间格式。