浏览器缓存

摘要:
协商缓存:会去服务器比对,若没改变才直接读取本地缓存,返回的状态码是304。协商缓存Last-Modified和If-Modified-SinceLast-Modified是响应头If-Modified-Since是请求头F5刷新页面的时候,浏览器会忽略缓存继续向服务器发送请求。如果此时服务器上的文件没有被修改会返回304,让浏览器直接从缓存中取,减少响应开销。

什么是缓存:

首先,什么是缓存?我的理解,缓存就是一个资源副本。当我们向服务器请求资源后,会根据情况将资源 copy 一份副本存在本地,以方便下次读取。它与本地存储 localStorage 、cookie 等不同,本地存储更多是数据记录,存储量较小,为了本地操作方便。而缓存更多是为了减少资源请求,多用于存储文件,存储量相对较大。

HTTP Cache

HTTP Cache 是我们开发中接触最多的缓存,它分为强缓存和协商缓存。

强缓存:直接从本地副本比对读取,不去请求服务器,返回的状态码是 200。
协商缓存:会去服务器比对,若没改变才直接读取本地缓存,返回的状态码是 304。

缓存的作用:

a. 减少网络带宽消耗

b. 降低服务器压力

c. 减少网络延迟,加快页面打开速度

第一次请求(还没有缓存):

浏览器缓存第1张

有缓存后的请求:

浏览器缓存第2张

强缓存

Expires和Cache-Control (设置缓存什么时候过期,属于响应头)

Expires值通常是缓存的具体失效日期(时间戳),属于HTTP1.0协议

Cache-Control的值是max-age = 毫秒数, 属于HTTP1.1协议,它的优先级要比Expires要高

当缓存未过期时,下次再访问该文件,浏览器不会访问服务器,而是直接在缓存中取。

协商缓存

Last-Modified和If-Modified-Since

Last-Modified是响应头

If-Modified-Since是请求头

F5刷新页面的时候,浏览器会忽略缓存继续向服务器发送请求。如果此时服务器上的文件没有被修改会返回304,让浏览器直接从缓存中取,减少响应开销。

ETag和If-None-Match

Etag是服务端给资源对应的唯一标识符,能够更加准确的控制缓存。

免责声明:文章转载自《浏览器缓存》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇iOS开发 字符串vue中通过hls.js播放m3u8格式的视频下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

【JavaWeb学习】过滤器Filter

一、简介 Filter也称之为过滤器,它是Servlet技术中最激动人心的技术,WEB开发人员通过Filter技术,对web服务器管理的所有web资源:例如Jsp, Servlet, 静态图片文件或静态 html 文件等进行拦截,从而实现一些特殊的功能。例如实现URL级别的权限访问控制、过滤敏感词汇、压缩响应信息等一些高级功能。 Servlet API中提...

关于缓存的一些重要概念(Redis 前置菜)

1. 缓存的基本思想 很多朋友,只知道缓存可以提高系统性能以及减少请求相应时间,但是,不太清楚缓存的本质思想是什么。 缓存的基本思想其实很简单,就是我们非常熟悉的空间换时间。不要把缓存想的太高大上,虽然,它的确对系统的性能提升的性价比非常高。 其实,我们在学习使用缓存的时候,你会发现缓存的思想实际在操作系统或者其他地方都被大量用到。 比如CPU Cache...

“快准狠”找到Linux系统内存的问题

内存性能指标 最容易想到的是系统内存使用情况,比如已用内存、剩余内存、共享内存、可用内存、缓存和缓冲区的用量等。 已用内存和剩余内存很容易理解,就是已经使用和还未使用的内存。 共享内存是通过 tmpfs 实现的,所以它的大小也就是 tmpfs 使用的内存大小。tmpfs 其实也是一种特殊的缓存。 可用内存是新进程可以使用的最大内存,它包括剩余内存和可回收缓...

VirtualBox 虚拟机硬盘缓存与系统虚拟缓存对性能的影响测试。

在Linux系统下工作,登录一些网银及某些OA系统总会有浏览器兼容问题。   于是在系统中安装了VirtualBox虚拟机. 安装了Windows XP 系统以备不时之需。   虽然虚拟机的性能已经完全满足一般需要,不过我还是想着将其再尽可能的优化一下,同时为将来Openstack的中的虚拟性能的优化储备一点经验。   记得好像在网上看过一篇文章从理论上...

微信小程序开发——前端如何区分小程序运行环境

前言: 之前用vue做h5项目,对于接口请求,都是根据前端访问域名来判断运行环境,然后自动适配对应的服务器地址的。这样的好处就是在开发、测试及发布上线全程都不需要手动去改接口请求地址,只要提前配置好就行了。这样处理之后,只需要打包一次,就能同时适应所有环境而不需要再去改代码,打不同的包了。 对于微信小程序,发现前端并没有可以区分小程序运行环境(开发者工具、...

前端之缓存

目录 浏览器缓存机制 缓存位置 Service worker Memory Cache Disk Cache Push Cache 缓存过程 缓存策略 强缓存 协商缓存 缓存机制 实际缓存场景 用户行为 浏览器缓存机制 有缓存查找优先级。 缓存位置 Service worker 浏览器独立线程,要求必须使用HTTPS协议保证安全性...