浏览器缓存知识+JS实现缓存

浏览器缓存知识+JS实现缓存httpheader 中与缓存有关的关键属性 cache control public private no store max page 优先级高于其他一切设置 若有与之抵触的设置 一律覆盖掉 public 资源被客户端和代理服务器缓存 private 资源被客户端缓存 代理服务器不会缓存 no store 请求和响应都不缓存 max age 缓存资源 但是在指定的时间后缓存过期

http header中与缓存有关的关键属性
在这里插入图片描述

Etag:倾向于资源是否变更
Last-modified: 倾向于时间状态的变更。


cache-control:[public、private、no-store、max-page]
优先级高于其他一切设置,若有与之抵触的设置,一律覆盖掉。
public:资源被客户端和代理服务器缓存
private:资源被客户端缓存,代理服务器不会缓存。
no-store:请求和响应都不缓存。
max-age:缓存资源,但是在指定的时间后缓存过期。












浏览器请求首部字段
在这里插入图片描述
强缓存
强缓存下,浏览器不会向服务器发生请求,而是直接读取缓存。
如可以在浏览器下看到的from disk cache/from memory cache。对于一般的请求,若是存在该资源的缓存,并且在cache-control:max-age或者expires没有过期,就会命中强缓存。








协商缓存
在缓存过期后,继续请求该资源,需要重新验证缓存资源是否有效,采取的做法一般有两种(Etag比last-modified-value优先级高):

  1. 比较Etag和if-none-match:根据response header中的etag,浏览器向request header中添加if-none-match字段,服务器拿到请求后,将if-none-match的值与资源的Etag值进行比较,若相同则用协商缓存,返回304响应。
  2. 比较last-modified_value和if-modified-since:根据response header中的last-modified_value,浏览器向request header中添加if-modified-since字段,服务器拿到请求后,将if-modified-since的值与资源的last-modified的值进行比较,若相同则用协商缓存,返回304响应。

缓存策略

1. 缓存存储策略

cache-control:private,响应数据会被缓存到客户端

2. 缓存过期策略

3. 缓存对比策略

last-modified:浏览器会携带该值去服务器比对,对比成功会返回304,服务器提示浏览器从本地加载数据;若是对比失败会返回200,则服务器会返回响应请求数据,客户端收到数据展示并刷新本地缓存。

https://mp.weixin..com/s?__biz=MzAxODE2MjM1MA==&mid=2651553205&idx=3&sn=3e509010560ca3b7e9b1d0aeea3da732&chksm=8025aa74b752236210213929f8bf7b7aef642d1a9607100e851d2158aa4d0d327d1cb9c05a8c&mpshare=1&scene=23&srcid=1204sJUvyvEzsTj5MlTWKztU#rd

http://www.cnblogs.com/vajoy/p/5341664.html

js实现缓存

EventUtil.addHandler(applicationCache, "updateready", function() { applicationCache.swapCche(); }) 
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请联系我们举报,一经查实,本站将立刻删除。

发布者:全栈程序员-站长,转载请注明出处:https://javaforall.net/176783.html原文链接:https://javaforall.net

(0)
上一篇 2026年3月26日 下午9:03
下一篇 2026年3月26日 下午9:03


相关推荐

  • 如何在Mac中打开pdm文件「建议收藏」

    在windows系统我们打开pdm文件同样都是使用powerdesigner,功能齐全强大,但是powerdesigner没有Mac版本。网上有个parsePDM下下来了也根本不能使用。下面我给上一个我目前在使用的工具,简单易用。使用起来十分方便点击这里下载文件

    2022年4月12日
    1.2K
  • 基础教程:TCP连接的建立和释放

    基础教程:TCP连接的建立和释放

    2022年3月6日
    101
  • 进程控制块PCB

    进程控制块PCB我们知道 每个进程在内核中都有一个进程控制块 PCB 来维护进程相关的信息 Linux 内核的进程控制块是 task struct 结构体 usr src linux headers 3 16 0 30 include linux sched h 文件中可以查看 structtask struct 结构体定义 其内部成员有很多 我们重点掌握以下部分即可 进程 id 系统中每个进程有唯一的 id 在 C 语

    2026年3月19日
    2
  • 名词解释:DEADBEEF

    名词解释:DEADBEEF名词解释 DEADBEEF 搜索自 googleDEADBE ded beef n FromtheJargo Thehexadecim fillpatternf includingthe 6000 Som

    2026年3月16日
    2
  • 计算机专业英语复试专业问题(计算机专业笔试题)

    总述前段时间准备计算机考研复试,发现大部分的学校需要面试英语口语,但是我就一直很疑惑,老师们会怎样进行问答。通过在网上查阅和自我总结,特地将我找到的资料分享给小伙伴。祝愿所有小伙伴能考研成功。问题分类所有的问题大概会分为以下几类:一、自我介绍1、英文自我介绍2、中文自我介绍二、自我认知1、兴趣2、家庭3、优点缺点三、实践经历1、实践经历2、科研经历3、工作经历四、本校学校1、本科学校2、毕业论文五…

    2022年4月16日
    53
  • Java-Object转JSONObject

    Java-Object转JSONObject第一种方式importcom.alibaba.fastjson.JSONArray;importcom.alibaba.fastjson.JSONObject;Objectimages=datum.getImages();if(null!=images){StringdoImages=(String)datum.getImages();charc=doImages.charAt(0);charb=doImages.charAt(d

    2022年4月29日
    79

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注

关注全栈程序员社区公众号