❶ 浏览器缓存(http缓存)
浏览器缓存有两种:强制缓存和协商缓存
向浏览器缓存中查找请求结果,根据【缓存规则】决定是否使用该结果。
强制缓存失效后,携带缓存标识请求服务器,服务器根据缓存标识判断是否使用缓存
当浏览器向服务器发送请求的时候,服务器会将缓存规则放入HTTP响应的报文的HTTP头中和请求结果一起返回给浏览器(ps:下文说的时间点均为类似:Sat Aug 14 2021 11:01:52,秒级)
两个字段:Expires和Cache-Control,优先级:Cache-Control > Expires,客户端比较时间
Expires :HTTP/1.0,返回值为【到期时间点】,再次请求,客户端的时间< Expires,直接用缓存(ps:客户端与服务器端时间可能存在误差,出问题)
Cache-Control :HTTP/1.1,有以下字段
Last-Modified / If-Modified-Since 和 Etag / If-None-Match,优先级Etag > Last-Modified,服务器比较时间
Last-Modified(服务端返回客户端) / If-Modified-Since(客户端传入服务端) :两个值相同,表示:资源文件在服务器最后被修改的时间【时间点】。
Etag(服务端返回客户端) / If-None-Match(客户端传入服务端) ,两个值相同,为当前资源文件的一个唯一标识(由服务器生成)
Etag什么时候用
雅虎禁用了Etag:因为ETag的值和服务器有关,那么对于同样的文件,可能下次请求的时候是发给不同的服务器,结果也会重新发送数据,所以就会影响网页加载速度,增加服务器的压力(但Last-Modified也与服务器有关)
主要解决的问题:
浏览器的每个tab都是一个进程
两个缓存的地方 from memory cache(内存缓存) 和 from disk cache(硬盘缓存) ,读取顺序为memory > disk
❷ vivo手机浏览器缓存的视频在哪里
在手机浏览器--底部“☰”--我的视频--已缓存视频即可查看。
❸ 浏览器缓存原理简述
缓存文件存储方式有2种:内存和硬盘。为了提高文件读取速度,浏览器优先读内存中的缓存文件(如果存在的话)。
按照本地缓存阶段和协商缓存阶段分类:
缓存的策略由http消息头Cache-Control确定,以下为各个值对应的效果:
Cache-Control:public :所有内容都将被缓存(客户端和代理服务器都可缓存)
Cache-Control:private :所有内容只有客户端可以缓存
Cache-Control:no-cache :默认值。客户端缓存内容,但是是否使用缓存则需要经过协商缓存来验证决定
Cache-Control:no-store :所有内容都不会被缓存,即不使用强制缓存,也不使用协商缓存
Cache-Control:max-age=xxx (xxx is numeric) :缓存内容将在xxx秒后失效
HTTP1.0 的特性,标识该资源过期的时间点,它是一个绝对值,格林威治时间(Greenwich Mean Time, GMT),即在这个时间点之后,缓存的资源过期; 优先级:Cache-Control 优先级高于 Expires ,为了兼容,通常两个头部同时设置;浏览器默认行为:其实就算 Response Header 中没有设置 Cache-Control 和 Expires,浏览器仍然会缓存某些资源,这是浏览器的默认行为,是为了提升性能进行的优化,每个浏览器的行为可能不一致,有些浏览器甚至没有这样的优化。
Last-Modified (Response Header)与 If-Modified-Since (Request Header)是一对报文头,属于 http 1.0。
If-Modified-Since 是一个请求首部字段,并且只能用在 GET 或者 HEAD 请求中。Last-Modified 是一个响应首部字段,包含服务器认定的资源作出修改的日期及时间。当带着 If-Modified-Since 头访问服务器请求资源时,服务器会检查 Last-Modified,如果 Last-Modified 的时间早于或等于 If-Modified-Since 则会返回一个不带主体的 304 响应,否则将重新返回资源。
ETag 与 If-None-Match 是一对报文头,属于 http 1.1。
ETag 是一个响应首部字段,它是根据实体内容生成的一段 hash 字符串,标识资源的状态,由服务端产生。If-None-Match 是一个条件式的请求首部。如果请求资源时在请求首部加上这个字段,值为之前服务器端返回的资源上的 ETag,则当且仅当服务器上没有任何资源的 ETag 属性值与这个首部中列出的时候,服务器才会返回带有所请求资源实体的 200 响应,否则服务器会返回不带实体的 304 响应。
❹ 浏览器缓存怎么清除
清除浏览器缓存具体操作步骤如下:
工具:苹果电脑、浏览器软件。
1、在苹果电脑上打开浏览器,点击右上角的小圆点。
❺ 电脑中浏览器缓存是什么意思
浏览器缓存,是打开网页首先需要加载到本地的图片文字视频等网页文件,一般只有缓存到本地才可以流畅访问,否则就会无法正常加载。或者就无法打开网页了。
❻ 清理浏览器缓存在什么地方
最简便快速的方法:打开浏览器后,按住键盘上的 Ctrl+Shift+Delet 键。
使用组合快捷键后,在弹出的面板上,勾选所需删除的缓存项,点击“立即清理”按钮即可完成缓存的清理。
浏览器是用来检索、展示以及传递Web信息资源的应用程序。
Web信息资源由统一资源标识符( Uniform Resource Identifier,URI)所标记,它是一张网页、一张图片、一段视频或者任何在Web上所呈现的内容。使用者可以借助超级链接( Hyperlinks),通过浏览器浏览互相关联的信息。
❼ 电脑浏览器缓存在哪里清理
方法/步骤
首先介绍第一种方法,最简便快速的:打开浏览器后,按住键盘上的 Ctrl+Shift+Delet 键。
怎么快速清理浏览器缓存(多种方式)
使用组合快捷键后,在弹出的面板上,勾选所需删除的缓存项,点击“立即清理”按钮即可完成缓存的清理。
怎么快速清理浏览器缓存(多种方式)
第二种方法,点击电脑左下角“开始”——“运行”——输入“cmd”,点击确认。 (也可以直接用快捷键“Win+R”打开)
怎么快速清理浏览器缓存(多种方式)
在弹出的命令提示符窗口输入命令:DEL *.SOL/S 然后点击“Enter”键,运行完毕后重新打开浏览器即可。
怎么快速清理浏览器缓存(多种方式)
第三个方法,介绍一种比较常规的方法,打开浏览器,点击菜单键(一般都在浏览器右上角)——工具——Internet选项。
怎么快速清理浏览器缓存(多种方式)
在弹出的小框框内,选择第一个“常规”面板,点击“删除” 按钮。
怎么快速清理浏览器缓存(多种方式)
在新的弹出框内,勾选上所需删除的选项,点击“删除”按钮即可完成缓存的清理。
怎么快速清理浏览器缓存(多种方式)
最后,介绍一个最霸道的方法。在刚才第三个方法中的 Internet选项——常规 面板中,点击“设置”——“查看文件”按钮。
怎么快速清理浏览器缓存(多种方式)
出现的缓存文件夹中,选择所有文件(快捷键:Ctrl+A),点击 Ctrl+D 键,确认删除所有缓存文件,即可将所有缓存的文件从电脑里删除的干干净净。
怎么快速清理浏览器缓存(多种方式)
❽ 浏览器缓存机制
有dns的地方,就有缓存。浏览器、操作系统、Local DNS、根域名服务器,它们都会对DNS结果做一定程度的缓存。
DNS查询过程如下:
首先搜索浏览器自身的DNS缓存,如果存在,则域名解析到此完成。
如果浏览器自身的缓存里面没有找到对应的条目,那么会尝试读取操作系统的hosts文件看是否存在对应的映射关系,如果存在,则域名解析到此完成。
如果本地hosts文件不存在映射关系,则查找本地DNS服务器(ISP服务器,或者自己手动设置的DNS服务器),如果存在,域名到此解析完成。
如果本地DNS服务器还没找到的话,它就会向根服务器发出请求,进行递归查询。
浏览器本地缓存失效后,浏览器会向CDN边缘节点发起请求。类似浏览器缓存,CDN边缘节点也存在着一套缓存机制。CDN边缘节点缓存策略因服务商不同而不同,但一般都会遵循http标准协议,通过http响应头中的
Cache-control: max-age 的字段来设置CDN边缘节点数据缓存时间。
当浏览器向CDN节点请求数据时,CDN节点会判断缓存数据是否过期,若缓存数据并没有过期,则直接将缓存数据返回给客户端;否则,CDN节点就会向服务器发出回源请求,从服务器拉取最新数据,更新本地缓存,并将最新数据返回给客户端。 CDN服务商一般会提供基于文件后缀、目录多个维度来指定CDN缓存时间,为用户提供更精细化的缓存管理。
CDN 优势
CDN节点解决了跨运营商和跨地域访问的问题,访问延时大大降低。
大部分请求在CDN边缘节点完成,CDN起到了分流作用,减轻了源服务器的负载。
http请求报文(request)
请求行
请求方法 空格 URL 空格 协议版本 回车符 换行符
请求头(通用信息头、请求头、实体头)
头部字段名 冒号 值 回车键 换行符
...
头部字段名 冒号 值 回车键 换行符
空行
回车符 换行符
实体主体(只有post请求有)
主体
http响应报文(response)
状态行
协议版本 空格 状态码 空格 状态码描述 回车符 换行符
响应头部
头部字段名 冒号 值 回车符 换行符
...
头部字段名 冒号 值 回车符 换行符
空行
回车符 换行符
响应正文
正文
浏览器初次向服务器发起请求后拿到请求结果,会根据响应报文中HTTP头的缓存标识,决定是否缓存返回的结果,是则将请求结果和缓存标识存入浏览器缓存中
浏览器每次发起请求,都会现在浏览器缓存中查找该请求的结果以及缓存标识
浏览器 浏览器缓存 服务器
——————第一次发起http请求——————>
<——没有该请求的缓存结果和缓存标识————
——————————————发起http请求——————————————>
<——————————返回该请求结果和缓存规则————————————
——将请求结果和缓存标识存入浏览器缓存——>
强制缓存就是向浏览器缓存查找结果,并根据该结果的缓存规则来决定是否使用该缓存结果的过程
强制缓存的情况分为三种:
1、不存在该缓存结果和缓存标识,强制缓存失效,直接向服务器发起请求
2、存在该缓存结果和缓存标识,但结果已经失效,强制缓存失效,使用协商缓存
3、存在该缓存结果和缓存标识,且该结果没有失效,强制缓存生效,直接返回该结果
控制强制缓存的字段:Expires,Cache-Control
Expires 是 HTTP/1.0 控制缓存的字段,值为服务器返回该请求的结果缓存时间
即再次发送请求是,客户端时间 小于 Expires的值,直接使用缓存结果
Cache-Control 是HTTP/1.1的规则,主要用于控制网页缓存,主要取值为:
public:所有的内容都缓存(客户端和代理服务器都可以缓存)
private:所有内容只有客户端可以缓存(默认值)
no-cache:客户端缓存内容,但是是否使用缓存则需要经过协商缓存来验证决定
no-store:即不使用强制缓存,也不使用协商缓存
max-age=xxx:缓存内容将在xxx秒后失效
Expires 是一个绝对值
Cache-Control 中 max-age 是相对值,解决了 Expires时期 服务端与客户端 可能出现时间差的问题
注:Expires和Cache-Control同时存在时,只有Cache-Control生效
协商缓存就是强制缓存失效后,浏览器携带缓存标识向服务器发起请求,由服务器根据缓存标识决定是否使用缓存的过程
协商缓存的两种情况:
1、协商缓存生效,返回304,继续使用缓存
过程:
浏览器 浏览器缓存 服务器
————————发起http请求————————>
<——该请求的缓存结果失效,只返回缓存标识——
————————携带该资源的缓存标识,发起http请求————————>
<—————————————304,该资源无更新————————————
——————获取该请求的缓存结果——————>
<——————返回该请求的缓存结果——————
2、协商缓存失败,返回200和请求结果
过程:
浏览器 浏览器缓存 服务器
————————发起http请求————————>
<——该请求的缓存结果失效,只返回缓存标识——
————————携带该资源的缓存标识,发起http请求————————>
<————————200,资源已更新,重新返回请求和结果———————
——将该请求结果和缓存标识存入浏览器缓存中—>
协商缓存的标识也是在响应报文的HTTP头中和请求结果一起返回给浏览器的
控制协商缓存的字段:
(1) Last-Modified/If-Modified-Since:Last-Modified是服务器响应请求是,返回该资源文件在服务器最后被修改的时间;If-Modified-Since再次发起请求时,携带上次返回的Last-Modified的值,服务器将该字段值与该资源最后修改时间对比,决定是否用缓存
(2)Etag/If-None-Match:Etag服务器响应请求时,返回当前资源文件的一个唯一标识,由服务器生成之;If-None-Match是再次发起请求时,携带上次返回的唯一标识Etag的值,服务器收到后,将该字段值与该资源在服务器上的Etag对比,一致 则返回304,否则返回200
注:Etag/If-None-Match优先级高于Last-Modified/If-Modified-Since,同时存在时只有Etag/If-None-Match生效
浏览器缓存分为:内存缓存 和 硬盘缓存
内存缓存特性:
(1)快速读取:内存缓存会将编译解析后的文件,存入该进程的内存中,便于下次运行时快速读取
(2)时效性:一旦关闭进程,进程内存清空
硬盘缓存特性:
永久性:直接写入硬盘文件中
复杂、缓慢:读取缓存对该缓存存放的硬盘文件进行I/O操作,重新解析
from memory cache:使用内存中的缓存
from disk cache:使用硬盘中的缓存
浏览器读取顺序:memory ——> disk
浏览器将js和图片等文件解析执行后直接存入内存缓存中,F5刷新页面时,from memory cache(使用内存中的缓存)
css文件存入硬盘中,F5刷新页面时,from disk cache(使用硬盘中的缓存)
参考文章
https://segmentfault.com/a/1190000017962411
https://www.cnblogs.com/chengxs/p/10396066.html
❾ 怎么样清理浏览器缓存垃圾
Etag的工作原理与Last-modified类似,不同点在于Etag的值是用户可自定义的
缓存协商可应用在动态页面且实时性不是特别强的页面,如网站首页
要清空 Chrome 的缓存,请按以下步骤操作:
打开chrome浏览器,使用Ctrl+Shift+Delete快捷键,就会打开清理浏览数据页面,选择清理缓存选项,
然后单击“清除浏览数据”按键即可。
或者单击浏览器上的扳手-->选项-->高级选项-->隐私设置一栏中的清楚浏览数据 之后重复上面的步骤。 彻底缓存的意思是在缓存失效之前不再需要跟服务器交互
常用的是Expires,Expires的值是一个绝对时间,由服务器产生
这儿存在一个问题,就是服务器的时间可能给客户端的时间不一致导致缓存时间的偏差
要解决这个问题就要使用cache-control,它保存的是一个相对浏览器的时间
如果同时存在cache-control和Expires怎么办呢?
浏览器总是优先使用cache-control,如果没有cache-control才考虑Expires
浏览器缓存最大的价值是节省了带宽
为什么没有提高吞吐率呢? 下面来分析一下
这里分两种情况:静态页面和动态页面
服务端加载静态页面需要进行磁盘IO,浏览器缓存则可节省这部分时间,不过服务器一般会用squid等工具进行缓存,所以静态资源在提高吞吐率方面效果不明显
。