前端页面meta标签设置缓存

配合客户端写的网页;客户端需求是无网络的情况下要使用缓存的网页;但是发现服务端更新完文件后并且ETag值发生了更改但是前端页面并没有更新;废话不说;先走代码;该代码是让客户端在有网络的情况下每次校验服务端是否发生更改;

<meta http-equiv="Cache-control" content="no-cache,max-age=0, must-revalidate,no-store">
    <meta http-equiv="Pragma" content="no-cache" />
    <meta http-equiv="Expires" content="0" />
    <meta http-equiv="Cache" content="no-cache">

浏览器的缓存机制

  1. 当前缓存的文件是否过期;
  2. 服务器中文件是否有改动

判断缓存过期以及文件的变动

文件变动后文件的Etag值会发生更改;客户端先问服务器Etag值是否发生更改;然后决定是否更新当前文件;

设置过期,在请求头中设置字段

Http1.0
  1. Pragma:它用来向后兼容只支持 HTTP/1.0 协议的缓存服务器,那时候 HTTP/1.1 协议中的 Cache-Control 还没有出来
Http1.1
  1. Expires:相应头过期时间;Cache-control中设置max-age;则该属性会被忽略
  2. Cache-control;该字段的优先级要比Expires优先级高

Cacha-control常见的取值:

  • no-chche:表示无论服务端有没有设置Cache-control,都必须重新追根到源服务器进行校验,源服务器未变化返回304;

  • must-revalidate:告诉浏览器/缓存服务器;在本地文件过期之前可以使用本地文件;本地文件一旦过期需要去源服务器进行有效性校验;如果有缓存服务器且该资源未过有效期则命中缓存服务器并返回200;如果过期切源服务器未发生更改;则教研后返回304;

  • max-age:缓存的内容将在多少秒后失效,相对于请求时间来说的;max-age=0便是无论服务端如何设置;在重新获取资源之前;先检验ETag/Last-Modified;在设置max-age=0或no-cache后;在资源无更新的情况下访问都会返回304

  • private:客户端可以缓存

  • public:客户端和代理服务器都可缓存

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

  • 浏览器对于请求资源, 流程如图所示: 可以看到浏览器的缓存机制分为两个部分: 1、当前缓存是否过期? 2、服务器中...
    zhoulujun阅读 4,971评论 0 3
  • 网络特有的延迟以及数据传输的成本,制约互联网快速获取Web资源。为此,HTTP协议引入缓存以空间换时间,使浏览器缓...
    大头8086阅读 8,257评论 2 12
  • 本文内容大多参考《图解HTTP》一书 一. 认识代理服务器 所以讲缓存为什么要先扯代理服务器?别急,让我们看一下一...
    流光号船长阅读 6,107评论 0 10
  • 参考《深入理解浏览器的缓存机制》进行整理 前言 缓存可以说是性能优化中简单高效的一种优化方式了。一个优秀的缓存策略...
    琢磨先生lf阅读 4,064评论 1 1
  • 《人性的弱点》这本书是我最近在看的,看得很慢,学到的东西也很多。人性当中有着很多的弱点。不会批评与赞赏,就是其中的...
    暂无简介0阅读 4,580评论 0 3

友情链接更多精彩内容