说说如何实现不清理微信缓存,就能看到实时更新的页面

要想实现这个功能,需要先了解以下这些概念。

1 http-equiv 属性

http-equiv 属性用于设置 HTTP 响应头,它一般配合 content 属性一起使用, content 属性用于设置响应头的值。

2 Cache-Control 响应头

网页的缓存是由 HTTP 消息头中的 “Cache-Control” 来控制的。这是 HTTP/1.1 协议新定义的控制缓存的消息头。缓存指令是单向的,也就是说,在请求中设置的指令,不会被包含在响应中。在微信中打开的页面,本质也是网页,所以也可以通过 HTTP 消息头来控制。

Cache-Control 值 说明
public 所有内容都将被客户端与代理服务器缓存。
private 内容只缓存到私有缓存中,即客户端可以缓存。此为默认值
no-cache 如果存在合适的验证令牌 (ETag),客户端会先与服务器确认返回的响应是否被更改,如果未被更改,则不会继续请求。
no-store 所有内容都不会被缓存。
must-revalidation/proxy-revalidation 如果缓存的内容失效,请求必须发送到服务器/代理以进行重新验证。
max-age=xxx 缓存的内容将在 xxx 秒后失效, 这个选项只在HTTP 1.1可用。如果和 Last-Modified 一起使用时, 优先级较高。

注意: Cache-Control 会覆盖 Expires 和 Last-Modified。 而且,由于不同浏览器对 Cache-Control 处理行为基本相同,所以这个属性是处理跨浏览器缓存问题的最有效的方法。

3 Pragma 响应头

Pragma 是 HTTP/1.0 所定义的头部,主要用来向后兼容只支持 HTTP/1.0 协议的缓存服务器,它只有一个 no-cache 值。

<meta http-equiv="Pragma" content="no-cache" />

与以下 Cache-Control 写法,效果相同:

<meta http-equiv="Cache-Control" content="no-cache"/>

4 Expires 响应头

Expires 响应头可设置缓存过期的时间点, 在此时间点之后,缓存过期。

<meta http-equiv="Expires" content="0" />

如果在 Cache-Control 响应头设置了 “max-age” 或者 “s-max-age” 指令,那么这个 Expires 头会被忽略。


综上所述,通过以下设置,就可以实现不清理微信缓存,看到实时更新的页面:

<meta http-equiv="Cache-Control" content="no-cache, no-store, must-revalidate" />
<meta http-equiv="Pragma" content="no-cache" />
发布了636 篇原创文章 · 获赞 719 · 访问量 93万+

猜你喜欢

转载自blog.csdn.net/deniro_li/article/details/104338945