强缓存刷新
㈠ 怎么解决浏览器强制刷新缓存
是在使用的浏览器本身的设置问题
可以试试夸克浏览器,手机浏览器中比较简洁实用的浏览器,性能也不错
㈡ 如何强制客户端刷新缓存
这样可以清除缓存:
System.Web.HttpContext.Current.Cache.Remove(string CacheName)
如果你的图片更新频繁,你就没必要把那个图片加入到缓存,如果一定要加,而又不想每次刷新都清除缓存,那你只有给你改变过的图片加上标识...
缓存是为了把一些变更少的内容保存在客户端,如果你的图片老在更新的话,那我觉得那个图片不应该在缓存的范围内,当然如果你有办法强制清除用户的缓存的话,这个也不难实。关键的是,你的图片是同名
㈢ 360极速浏览器“强制刷新(忽略缓存)当前网页”快捷键是什么拜托各位大神
360极速浏览器ldquo;强制刷新(忽略缓存)当前网页rdquo;快捷键是Ctrl+F5、Shift+F5。360极速浏览器可以使用快捷键来快捷使用浏览器的功能。 360极速浏览器是一款极速、安全的无缝双核浏览器。它基于Chromium开源项目,具有闪电般的浏览速度、完备的安全特性及海量丰富的实用工具扩展。此外,为了更适合国内用户使用,它加入了鼠标手势、超级拖拽、恢复关闭的标签、地址栏下拉列表等实用功能,配合原有Chromium的顺滑操作体验,让浏览网页时顺畅、安心。 360极速浏览器是国内最安全的双核浏览器。360极速浏览器集成了独有的安全技术,充分利用360的优势,集成了恶意代码智能拦截、下载文件即时扫描、隔离沙箱保护、恶意网站自动报警、广告窗口智能过滤等强劲功能,内置最全的恶意网址库,采用最新的云安全引擎。 360极速浏览器是国内主流双核浏览器中唯一全面继承了chromeldquo;沙箱(sandboxing)rdquo;技术的浏览器。它能将网页与flash都安排在沙箱保护中运行,所以,当某个网页出现错误或者被病毒攻击时,不会导致整个浏览器或者其它程序关闭。 360极速浏览器在安全性能上也延续了360作为国内互联网第一安全厂商的优势。采用创新的ldquo;云安全rdquo;防护体系,ldquo;云安全rdquo;恶意网址库实现了对恶意网站、网址的实时监控和更新,并第一时间对用户进行安全预警,可以有效遏制钓鱼网站为用户设下的各类欺诈陷阱,大大提升风险控制的防范等级,堪称为病毒木马布下了一张ldquo;天罗地网rdquo;。
㈣ 关于vue强制刷新
在vue中使用了keep-alive标签后,组件会被缓存下来,这时候如果需要强制刷新当前页面有两种思路。
一,使用v-if标签,销毁组件,然后再重新生成组件
二,在include数组中删除组件的记录,再重新添加记录
㈤ APP中缓存、加载与刷新机制设计【转载】
1、为什么要加缓存?
场景一:【等待】,在向服务器请求新的数据时。我们让用户看到什么?第一种是漂亮的等待加载页面;第二种是缓存的内容。对于第二种,用户可以对页面进行操作,等待新数据时可以查看旧数据,更具有“可操作性”与“可用性”,从而减轻了从服务器获取数据这一动作的大小和时间长短,增强了用户体验。另一方面,如果内容更新的间隔较长或者用户刷新的间隔较短,在没有缓存的情况下,很多数据我们会多次重复的向服务器获取,增加了成本。
场景二:【结果】没有联网,或者在地铁上网络太差无法加载数据时,如果留给用户一个空白页面,实在是感觉有点不负责任啊。并且很多功能在没有联网的情况下也有使用的可能性,比如:APP中的通讯录,查看一些聊天记录,通知信息,文章列表等。因为用户打开APP不一定是要看新信息,说不定是回顾老信息(或许老信息里也有用户之前没看的),所以恰当的缓存可以满足更多的用户场景。
场景三:【金钱】有一天,一个用户发现自己装了某个APP后流量用的特别快,Ta可能永远将这个APP打入冷宫了,而增加缓存正是节省流量的一个方法。虽然节省的不多或者用户也察觉不到,但是作为一个有态度的产品经理,应该多做一些思考。
2、什么是缓存?
缓存可分为如下几类:
(1)app缓存。
(2)固定缓存。
(3)可手动清理的缓存。
(4)不可手动清理的缓存。
(5)临时缓存。
其中,临时缓存常用于一个功能页面内,保存各栏目的缓存。同一个功能里会把子功能分为多个栏目进行划分,每个标签栏目下的内容在本次使用中都可保存为临时缓存,在该功能里切换栏目,不需要重新加载数据,使用缓存显示。
对于用户来说,使用时达到了无缝切换浏览,对于服务器来说,在短时间内数据很少会有更新,所以在一般情况下能满足用户的正常需求,并达到体验优秀。
临时缓存的清理机制是:退出该功能模块就清除之前的缓存。也就是说下次进入该功能模块,需要重新获取一次数据。
很多时候我们都会用到临时缓存,因为那些信息真的不是那么重要,而且不需要经常反复查看,那对于那些我们经常使用而且经常需要反复查看的信息,马海祥建议采取固定缓存,保存在本地,方便下次翻阅时不需要再一次向服务器请求数据了。
对于固定缓存又会细分为可手动清理的缓存和不可手动清理的缓存。
第一种是我们最常见的缓存,几乎所有产品都采用这种缓存方式。平时用户浏览文章、图集加载的数据就以这种形式缓存在本地,下次看回这篇文章、图集时就不需要加载了。用户也可以手动把这些缓存清理了,释放空间。
而对于某些特殊场景,例如一些相对固定的数据,我们不愿意一开始就打包进App里,这样会占太大容量,造成产品包很大,也不愿意每次进入页面都向服务器加载这些信息,那怎么办?建议的解决方法就是我们可以只加载一次就永远存在本地了,这样安装包也不会大,以后也不用加载了。
3、如何清理缓存?
一般App都会在“设置”里提供一个清理缓存的功能,一键把空间释放。除此之外,App最好要设计自动清理机制,可以通过两个维度来设计这个机制。
(1)、时间
通过设定一个固定的时间,或者根据用户使用周期灵活设定时间来清理缓存。每个产品的场景不一,用户使用频率不一,设定这个机制的时候就需要结合实际情况考虑了。
(2)、容量
一般是设定一个容量上限,采用堆栈的设计原理进行缓存清理,溢出堆栈的旧数据将自动清除。
1、页面加载
方案1:单页面整体加载
这种加载比较简单,一般运用在页面内容比较单一的情况下,所以直接一次性加载完所有数据后再显示内容。其单页面加载失败的状态相对来说也比较好处理。
方案2:单页面分块加载
这种方案的特点是,能让用户逐步看到内容,在这个渐进的过程中降低用户的焦虑心理。
其中又可以分为,模块间有关联性的,先加载父内容,再加载子内容。如优酷,先把栏目加载出来,再加载各栏目的内容。
模块间没有绝对关联性的,可独自加载各自模块内容,根据请求的速度不同分别显示。这样处理有一定几率让用户在没完全刷出数据的情况下就能找到自己需要的功能,如大众点评、淘宝客户端等。
框架固定,内容更新的,可先把框架显示出来,再把各模块的数据各自加载显示,如各种iOS自带应用。
这种分模块加载的需要特别注意加载失败的状态,毕竟每个模块都提示加载失败,点击重试是很挫的一件事,可以根据信息的优先级来决定哪些数据失败了采用默认状态,哪些数据采用失败提示。
方案3:跨页面加载
父页面&子页面 or 同一app内,页面间字段可以复用的,在加载子页面时不需要重新加载新数据。
方案4:预加载
这种加载方式的特点是,在加载一个页面内容的同时,预测用户的下一步行为,并为他下一步需要使用的页面加载内容,使得他在下一步的操作中能立刻获取信息而不需要加载等待。
预加载提供给用户无缝的产品使用体验,使得用户在使用产品的过程中更直接流畅,没有被打断的感觉。
具体的例子有:
在浏览图集的时候,当看到第一张的图片时,就自动后台加载第二第三第四张图片,用户浏览完第一张图片切换到第二张时就不会有加载等待的过程。
在浏览新闻列表时,就把每篇新闻的内容在后台进行预加载,用户选择看某篇新闻时,能立刻阅读到内容。
但是这种方案也需要面临很多的问题,马海祥觉得最直接的就是流量问题,因为会自动跑掉很多用户可能根本用不上的数据流量,所以,一般情况下马海祥建议可以设定在wifi环境才采用这种加载模式。又或者设定加载规则,只把主要内容预加载,而部分次要内容可以在用户真的用到的时候才加载,例如预加载新闻正文的情况,可以只加载文本信息,图片信息等到用户进入内页才加载。这种预加载与分块加载结合的方式也普遍运用在各个场景。
另外,预加载也需要时间的,他只是不在客户端显示给用户,默默在后台运作而已,需要特殊考虑未加载完用户就使用到那些信息的情况,所以在做预加载设计时需要同时考虑另一种适合该情况的普通加载方式。
预加载需要根据具体的场景来进行设计,设定好信息优先级,综合考虑各种类型信息的具体大小流量,整体考虑预加载的方式,这些都是需要经过精心分析思考的。
随着网络环境的发展,预加载将成为以后产品普遍的加载方式,他提供给用户的无缝使用体验**地提升了产品的可用性。
2、操作加载
除了页面的信息需要加载,页面内的操作也是需要通过给服务器发送请求记录的。
方案1:加载层
进行一个操作后,弹出模态的提示层,告知用户正在加载。采用模态的提示主要是防止用户在该过程中进行其他操作,导致当前加载出错。由于采用模态的提示,并且有可能因为网络原因导致长时间处于加载状态,建议提供一个“关闭”的操作,中止本次加载,恢复App可用状态。加载失败时可在当前浮层变换为失败提示。模态提示层是最稳妥的方式,但他会使用户在使用过程中有打断的感觉。
方案2:控件自身加载状态
这种方式是把操作加载的状态与控件的样式结合起来了,对某个控件进行操作后,控件变换为加载状态,此时控件不能重复操作。由于这种加载方式是控件的自身状态,不影响其他操作,所以用户也可以对页面进行其他操作,可能会导致同时有多个请求的情况,增加了加载失败的风险,这也算是这种方式的弊端,不过这种极端情况很少出现。请求失败后,可配合Toast提示告知用户失败的原因。
方案3:后台加载
用户在操作后,客户端立刻反馈操作成功,然后把请求放到后台与服务器交互,这一过程用户不需要了解,不需要等待,在正常情况**验是非常棒的。
但是在极端情况下会出现一些莫名其妙的状况,由于是后台记录请求并与服务器交互,所以实际请求是否成功客户端是不说明的,全部以操作成功来显示,这就会导致用户误以为操作成功了,但实际上下次来看发现没有成功。
所以,这种加载方式是需要根据具体使用场景来权衡使用的,对于一些重要的操作,建议还是使用模态的方式加载,对于一些小操作,如点赞、订阅、关注,可采用后台加载的方式。
3、下一页加载还是当前也加载
用户进入首页,正式迈出体验的第一步,接下来迎接的就是基于用户目标的界面间跳转。完成界面的跳转,会有各种加载策略,但无论形式如何,我们都可以将其归为两大类:“下一页加载”、“当前页加载”。
(1)“下一页加载”满足了用户提前窥视的需求
我们把页面看成“点”,页面流是连接这些点的“线”,我们以“用户想买一条牛仔裤”这一场景作为案例做了简单的眼动研究,从应用启动到商品浏览再到商品确定最后进入下单页,用户所呈现的瞳孔梯次增大,即E>D>C>B>A,为了解释这一现象,通过与被试交流,我们发现相比于各种浏览,用户更期待看到他们想看到的东西。因此此时的”下一页加载“正好,满足了用户提前窥视的需求。
(2) Wait!I Need Think Think
我们以同样的方式又对“使用支付宝对手机充值”这一场景做了研究,从开始支付到二次确认支付,用户所呈现的瞳孔都比较大,即A与B近似相等,通过访谈,我们发现与“递增体验流”不同的是,当用户遇到判断逻辑的界面时,用户并非急于想看下一页面到底包含怎样的内容,而是非0即1的验证心态,即我的操作效成功了吗?因此在判断逻辑界面中,用户的内容窥视需求并不强,当然也没什么内容,要么仅是一个小小的Toast,再大一点就是一个简单的信息反馈界面(意味着“下一页加载”在这里就是个鸡肋),用户反而对非0即1的验证需求较为强烈,其中还伴随着等待结果过程中的紧张感、激动感,因此界面通过 当前页加载 表明系统正在努力地处理用户交代的指令**了用户的紧张感、激动感,直到结果显现——“处理成功”,完成了非0即1验证的满足感。
4、先加载还是先展示
当需加载的是功能时,可以先展示再加载,当需加载的是内容时,则反过来。
淘宝
打开APP的第一个页面是功能,所以先展示再加载的:
随便点击一个模块(不要点菜单),下面要展示的将要是内容(商品),所以是先加载再展示的,没有加载完都不展示:
京东
同样的,功能模块先展示后加载:
内容先加载,没加载完不展示:
两种方式各有利弊:
先展示,后加载:
优点:给用户0等待的错觉
缺点:当前数据有可能是错的,而且得等用户操作到最后一步才会发现
先加载,后展示:
优点:保证数据的质量和准确
缺点:网络不好时,造成等待
显然,功能模块对于一个产品来说是既有固定的,在短时间内几乎不会更新,所以这种数据出现错误或与当前状态不同的几率小得多,因此,可以使用先展示后加载的方式。
另一方面,内容(特别是商品数据)是最容易产生变动的,为了保证每一个消费者看到的数据都是最真实,最准确的,所以务必要先加载再展示。
1、空白页面刷新失败有提示
现在的应用都标榜以内容为中心,所以都会极力避免空白页面的出现。对于大部分的应用,最好的方法就是使用缓存,进入页面之后,先显示之前的缓存,然后再进行内容的刷新。其次,消灭空白页面的第二种方法就是提供系统推荐项进行替代。但是对于一些页面,页面内容跟用户的使用状态关系密切,无法避免会出现空白页面,这时候会使用一些引导类的提示,使得页面变得更加丰富,同时可以促进用户产生内容。
但是一些资讯类应用,比如读读日报,打开默认是空白页面,然后再加载内容(我不是很明白这种设定)。其他一些应用,比如:豆瓣一刻和MONO,每天第一次进入应用的时候也会出现空白页面。我猜想第二类应用的展示方式的原因是这样的。他们的内容**都是严格以天为单位的,每天固定时段**精选内容。他们会希望你每天只看并且看完当天的东西,所以一旦到了第二天,昨天的内容就是累赘了。所以每天第一次进入应用的时候会出现空白页面,象征着每天都是从新开始。此时就会对应一个“空白刷新”逻辑。
空白刷新对应的场景是这样子的:用户想要刷新出内容,并且用户知道这里可以刷出新内容,但是没有刷新成功,这时候需要给用户一个交待。所以需要提示用户。同时,提示完用户之后需要给用户一个解决方法,这就是“点击后重试”。
2、缓存页面刷新失败无提示
常见的应用比如知乎、网易新闻、好奇心日报、微信朋友圈等,这些应用都会采用缓存的形式,打开之后显示的是缓存内容,然后系统会给服务器发送请求,如果有内容更新的话就会自动更新一次内容,更新之后的内容直接覆盖当前的内容。更新失败之后是没有提示的。但是有一些应用,比如有道词典、企鹅FM、网易云音乐等,他们更新失败之后是有提示的。
我觉得这两种应用的区分点在于
应用的使用频率;
内容的时间连续性;
界面之间的关系紧密度。
比如说网易新闻,作为一个打发时间的工具,每天使用频率就会比较高,所以用户进来之后是想看看有没有更新。其次,网易新闻的内容是连续不断更新的,所以用户会知道当前显示的内容是我看看过并且处理过的。最后,新闻列表页面显示的是摘要,用户可以通过摘要快速进行判断是否要进入详情页,摘要有助于帮助用户回忆上一次的使用场景。
所以这就对应着一个这样的场景:用户只是想看看有没有更新,所以他们已经做好了“没有新内容”的心理预期,所以即使是更新不了内容,用户也不会想太多。反倒是,如果进行了错误提示,用户可能会有一种挫败感。因为他知道现在有内容,只是因为网络的原因而没有更新,他要进行的任务受到了外界因素的阻碍,由此产生一种细微的挫败感。
3、缓存页面刷新失败有提示
另一类应用,使用频率没那么高,或者内容不具备时间连续性的,又或者说当前界面无法唤起用户上一次的使用场景。那么就有必要进行率先你失败提示了。
比如说企鹅FM,音频类的应用注定使用不会那么频繁,因为通过视觉接收的信息会比通过听觉接收的信息更快更多,同时音频类对环境的要求较高(比如用耳机时要求环境不那么嘈杂,外放时要求在私人场所)。其次,此类应用都是实时推荐的,不存在时间连续性的问题,用户无法通过时间来判断内容是否被阅读过。再者,标题也无法帮你快速做出判断,你还是要进去听过才知道内容是什么。最后如果不提醒,用户进入到详情页再收到提醒,就会觉得应用浪费了用户的时间。所以,对于此类内容,刷新失败是有必要进行提醒的。
㈥ 什么是强制刷新网页
1、是网页浏览后,一般会在本地留下缓存,普通刷新的话,浏览器会优先获取缓存里的资源代替从服务器上请求,以提高访问速度。
2、强制刷新就是告诉浏览器不要获取缓存,重新从服务器请求网页上的所有资源,适用于开发测试或者某些资源更新。
三、刷新与强制刷新的区别:一个不产生流量;一个产生流量;一个是终端,一个需要访问远端服务器。对于网速不错的电脑来说,用强制刷新还是比较好的。
四、注意事项:
1、常常刷新,让电脑保持清醒;个人使用习惯对电脑的影响也很大,首先是要正常开关机,开机的顺序是,先打开外设(如打印机,扫描仪等)的电源,显示器电源不与主机电源相连的,还要先打开显示器电源,然后再开主机电源。关机顺序相反,先关闭主机电源,再关闭外设电源。
2、尽量地减少对主机的损害,因为在主机通电的情况下,关闭外设的瞬间,对主机产生的冲击较大。关机后一段时间内,不能频繁地做开机关机的动作,因为这样对各配件的冲击很大,尤其是对硬盘的损伤更为严重。一般关机后距离下一次开机的时间,至少应有10秒钟。
3、特别要注意当电脑工作时,应避免进行关机操作。如机器正在读写数据时突然关机,很可能会损坏驱动器(硬盘、软驱等);更不能在机器工作时搬动机器,即使机器未工作时,也应尽量避免搬动机器,因为过大的振动会对硬盘一类的配件造成损坏。
4、关机时必须先关闭所有的程序,再按正常的顺序退出,否则有可能损坏应用程序。
㈦ FM怎么样清理缓存刷新
方法1:
直接用馨雨工具的清除缓存功能,重启游戏。
方法2:
在游戏设置中把“强制刷新皮肤缓存”(Always reload skin cache)勾上,然后点确定,刷新皮肤。
方法3:
XP系统缓存文件夹为“C:\Documents and Settings\你的用户名\Application Data\Sports Interactive\Football Manager 2009\Cache”,直接删除该文件夹,重启游戏。更具体地,英文缓存为English文件夹中的skc文件,中文缓存为Chinese (Simplified)文件夹中的skc文件。
㈧ 浏览器缓存及刷新
1、服务器开启Cache-Control缓存控制(优先级更高)
(相对时间,在这个时间之前不会和服务器通信,本地拿过来直接用)
Cache-Control:max-age=3600,这里是3600秒过期,过期前不会和服务器通信,直接用本地缓存
Cache-Control:no-cache,不使用本地缓存
2、服务器开启Expires(过期时间,绝对时间)
Expires:Thu,21 Jan 2017 23:39:02 GMT
1、Last-Modified(服务器返回此文件最后修改时间)
If-Modified-Since(客户端第二次请求该资源带着上次服务器返回的此文件最后修改时间,比对是否相同)
2、Etag(优先级更高)(第一次请求资源服务器返回一个Etag值)
If-None-Match(第二次请求资源客户端带着之前的Etag值给服务器进行比对)
如果多个参数同事存在时:
强缓存优先级更高,而在强缓存中,Cache-Control比Expires优先级高
协商缓存中,Etag比Last-Modified优先级高
1、正常操作:地址栏输入url,跳转链接,前进后退等
2、手动刷新:F5,点击刷新按钮,右键菜单刷新
3、强制刷新:ctrl+F5
1、正常操作:强制缓存有效,协商缓存有效
2、手动刷新:强制缓存失效,协商缓存有效
3、强制刷新:强制缓存失效,协商缓存失效
㈨ 前端浏览器缓存机制
在前端开发中,性能是一个永恒的话题,没有最好,只有更好。判断一个网站性能好坏,一个直入眼观的即是网页的反应速度,有一个方式就是使用缓存,一个优秀的缓存策略可以缩短网页请求的时间,减少延迟,并且网页可以重复利用,还可以减少带宽,降低网络负荷。
1: 为什么需要缓存?
a:缓存可以减少用户等待时间,提升用户体验
b:减少网络带宽消耗
c:降低服务器压力
Note:缓存使用不当,也会造成‘脏数据’问题
2:常见的缓存类型
强缓存 -
Expires服务器端设置,表示该资源的过期时间,会有弊端,客户端时间和服务器时间不一致的问题。
Cache-Control:max-age表示缓存资源的最大生命周期,单位是秒
所以Expires 结合 Cache-Control 一起使用,大型网站中一般比较适用
协商缓存-
Last-Modified:值为资源的最后更新时间,随服务器response返回
If-Modified-Since:通过比较两个时间来判断资源在两次请求期间是否有过修改,如果没有,则命中协商缓存
Etag:表示资源内容的唯一标识,即资源的消息摘要
If-None-Match:服务器通过比较请求头中的If-None-Match与当前资源的Etag是否一致来判断资源是否在两次请求期间有过修改
3:缓存流程图示:
a:浏览器会先检测强缓存类型(Cache-Control 或者 Expires)是否有效;命中直接浏览器本地获取缓存资源
b:未命中。服务器会根据请求头Request Header验证这个资源是否命中协商缓存,称之为HTTP二次验证,命中,服务器返回请求,但返回资源,而是告诉客户端直接中直接从浏览器缓存中获取
Note:
1.强缓存不会发生请求,协商缓存存在服务器请求
2.当协商缓存也未命中时,则服务器会将资源发送到客户端
3.F5刷新页面,会跳过强缓存
4.Ctrl+F5刷新页面,跳过强缓存和协商缓存
5.不会缓存的情况
HTTPS POST请求 根据Cookie获取认证信息 Request Header Cache-Control:no-cache, max-age=0
6.小故事大道理
上文对整个概念做了阐述,还是不够形象,我们来通过几个小故事生动理解一下:
故事一:Last-Modified
浏览器:Hi,我需要 jartto.min.js 这个文件,如果是在 Last-Modified: Fri Feb 15 2019 19:57:31 GMT 之后修改过的,请发给我。
服务器:(检查文件的修改时间)
服务器:Oh,这个文件在那个时间之后没有被修改过,你已经有最新的版本了。
浏览器:太好了,那我就显示给用户了。
故事二:ETag
浏览器:Hi,我需要 jartto.css 这个文件,有没有不匹配 3c61f-1c1-2aecb436 这个串的
服务器:(检查 ETag…)
服务器:Hey,我这里的版本也是 3c61f-1c1-2aecb436,你已经是最新的版本了
浏览器:好,那就可以使用本地缓存了
㈩ 浏览器缓存的方式和类型(笔记)
浏览器缓存只是计算机缓存的一种
1.内存缓存
将数据存到内存
2.代理服务器缓存
就是个自己找的中介。你拿东西先找中介,中介找房东,房东给中介,中介又给你。比如你需要房子钥匙,房东把钥匙放在中介那,你直接从中介那里拿钥匙。
3.CDN缓存
将数据存到CDN服务器。CDN也是个中介,不过这个中介是根据中介的忙碌程度(CDN服务器忙碌程度)、跟你的距离(CDN服务器和你的距离)自动给你分配的。
4.浏览器缓存( 我是个前端,只关注浏览器缓存。 )
根据HTTP协议决定要不要缓存,以什么方式缓存,缓存到哪(内存还是硬盘等)。
浏览器缓存是将浏览器请求过的数据(资源文件)保存到电脑上。需要再次使用的时候,直接从电脑上获取保存的数据(资源文件),这就是浏览器缓存
1.减少网络请求,节省流量
2.减轻服务器压力
3.资源加载速度快了,前端性能就更好了
1.Server Worker
还没搞懂,搞懂了再来写。
2.Memory Cache
内存中的缓存,关闭页面进程就释放内存
3.Disk Memory
硬盘中的缓存,不主动清理就一直在
4、Push Cache
推送缓存,是HTTP/2的内容,并没有严格执行HTTP头部的缓存指令。在Server Worker、Memory Cache、Disk Cache都没有命中的时候,它会被使用。在Session中存在,Session结束就会被释放,缓存时间短暂。
1.先去内存查找,找到直接加载
2.内存找不到,硬盘中找,找到直接加载
3.硬盘找不到进行网络请求
4.把请求获取的资源再缓存到硬盘和内存
1.强缓存
控制强制缓存的字段分别是Expires和Cache-Control,Cache-Control优先级比Expires高
-Expires设置一个绝对时间的GMT格式的时间字符串,这个是资源失效时间( 客户端的时间小于Expires的值,缺陷就是客户端的时间被改变就有问题 ),在这个时间之前都直接读取缓存。
-Cache-Control替代Expires,它利用的是相对时间,利用header信息字段的max-age值判断。
2.协商缓存
-Last-Modified/If-Modified-Since
Last-Modified:浏览器向服务器发送资源最后的修改时间
If-Modified-Since:当资源过期时,发现响应头具有Last-Modified声明,则再次向服务器请求时带上头if-modified-since,表示请求时间。服务器收到请求后,发现有if-modified-since则与被请求资源的最后修改时间进行对比(Last-Modified),若最后修改时间较新,说明资源又被改过,则返回最新资源,返回200;若最后修改时间较小,说明资源无新修改,返回304 ,使用缓存文件。
缺点:单位是秒,一秒内多次改变会认为没过期
-ETag/If-None-Match
ETag:由服务器生成返回给前端,帮助服务器控制web端的缓存验证,服务器会生成并且返回当前资源文件的一个唯一标识
If-None-Match:当资源过期时,发现响应头具有Etag声明,则再次向服务器请求时带上头if-none-match(唯一标识Etag值)。服务器收到该请求后,发现有If-None-Match则根据If-None-Match的字段值与该资源在服务器的Etag值做对比,一致则返回304,代表资源无更新,继续使用缓存文件;不一致则重新返回资源文件,状态码为200。
1.强缓存不发请求,协商缓存会发请求给服务器确认有没有过期
2.强缓存文件更新浏览器不知道,协商缓存更新浏览器能实时知道
1.点击浏览器的刷新按钮时,全部走缓存
2.F5或者鼠标右键刷新强制缓存失效,不影响协商缓存
3.CTRL+F5影响强制缓存和协商缓存都失效