摘要:
大多数现代浏览器都内置强大的开发者工具。在这些工具中,可以查看网页资源的缓存相关信息,如资源的缓存有效期、缓存策略等。以Chrome浏览器为例,打开开发者工具(F12或Ctrl+S... 大多数现代浏览器都内置强大的开发者工具。在这些工具中,可以查看网页资源的缓存相关信息,如资源的缓存有效期、缓存策略等。以Chrome浏览器为例,打开开发者工具(F12或Ctrl+Shift+I),切换到"网络"面板,选中某个资源,即可在"标题"和"响应头"中查看缓存相关信息。
除浏览器自带的开发者工具,也有一些专门的在线工具可以帮助查看网站的缓存策略。如PageSpeed Insights、Pingdom Tools等。这些工具不仅可以检查缓存,还可以提供其他网站性能优化建议。
除使用工具,我们也可以直接查看网页的HTTP响应头信息。响应头中包含缓存相关的字段,如Cache-Control、Expires、ETag等。通过分析这些字段,可以了解网站的缓存策略。可以使用浏览器开发者工具或在线工具如Curl来查看HTTP响应头。
查看网站的缓存策略有多种方法,可以使用浏览器开发者工具、在线工具,也可以直接分析HTTP响应头信息。掌握这些技巧,有助于我们更好地理解和优化网站的性能。
浏览器的缓存策略
浏览器的缓存策略是其高效性能的关键组成部分,它主要涉及资源在首次请求后如何存储和后续请求时的处理方式。 浏览器在获取资源时,首先会根据第一次请求时服务器返回的响应头信息来决定是否使用缓存。 缓存过程分为强缓存和协商缓存两种情况。 强缓存直接从缓存中读取资源,当在Chrome的网络选项中看到200状态码和来自硬盘或内存缓存的标识时,即为强缓存。 通过设置Expires和Cache-Control头实现。 而协商缓存则是当强缓存失效后,浏览器会携带缓存标识询问服务器,由服务器根据标识判断是否利用缓存,分为服务器确认使用缓存(返回304)和服务器不使用缓存(返回200并重新发送资源)两种情况。 浏览器的缓存机制遵循“强制缓存优先”的原则,一旦资源在强制缓存中可用,就直接使用,否则会进行协商缓存。 用户的行为,如刷新页面、清除缓存等,都会影响浏览器的缓存策略,可能导致资源重新从服务器获取。
一文说透常见的缓存策略
常见缓存策略包括三种:Cache Aside(旁路缓存)、Read/Write Through(读穿/写穿)和Write Back(写回)。 旁路缓存策略在实际开发中使用最多。 应用程序直接与缓存和数据库交互,数据在缓存中未找到时,应用程序会从数据库获取数据,然后更新缓存。 反之,数据更新时,数据库和缓存都需要同步更新。 旁路缓存策略分为读策略和写策略。 读策略中,应用程序在数据库中查找数据,若未找到则更新缓存。 写策略则相反,先更新数据库,然后更新缓存。 尽管写策略可以避免数据不一致的问题,但频繁更新缓存可能导致资源浪费。 因此,推荐在并发场景下先更新数据库再删除缓存的策略,即使存在数据不一致风险,但在高并发场景下实际发生概率较小。 另一种策略是先更新MySQL,再通过异步方式更新Redis。 这种方案主要利用监听MySQL的Binlog,将数据更新到Redis,适用于实现最终一致性,特别适合异地容灾、数据汇总等场景。 读穿/写穿策略由缓存层负责与数据库交互,减少应用程序负担。 在读穿策略下,若缓存未命中,缓存层会与数据库交互获取数据;在写穿策略下,数据更新时缓存和数据库同时更新。 这种策略适用于业务对缓存命中率有严格要求的场景。 写回策略仅更新缓存,不更新数据库,并将缓存数据标记为脏数据。 对于写多的场景,写回策略能迅速响应,但可能导致数据非强一致性,且存在数据丢失风险。 因此,适用于写操作频繁且对数据一致性要求不高的场景。 选择缓存策略需考虑业务场景、数据更新频率及对数据一致性的要求,以达到最佳性能和效率。
一文搞定Http缓存-强制缓存与协商缓存
本文从关注前端页面性能优化从而进一步理解HTTP缓存的核心过程,更详细的页面加载渲染和网络请求你可以参考文章:前端浏览器从输入URL到页面展现中间发生过程全面解析
HTTP缓存当浏览器访问网站的时候,第一访问的时候需要加载资源htmlcssjs图片,向服务器请求资源第一次之后访问可以利用缓存的功能从缓存中获取可以提高页面加载的速度,输入网址到页面加载减少网络请求的体积和数量可以加快页面性能
强制缓存强制缓存的过程浏览器向服务器发送请求
服务器返回资源
浏览器再次请求先判断max-age有没有过期,没有过期直接从缓存里拿资源
通过cache-control设置一个最大的有效时间max-age=300需要缓存就设置cache-control,不需要缓存就不设置cache-control,cache-control的设置都是有服务器通过响应头设置过来的
是一种服务端的缓存策略
协商缓存的过程浏览器向服务器发送请求
服务器返回资源和资源标识
浏览器再次请求发送亲鼓起和资源标识
如果不是最新资源服务器返回200状态码、最新资源和新的资源标识,如果是最新资源服务器返回304状态码直接从缓存中拿资源
Last-Modified:资源上一次修改的时间后续访问的时候发送请求和资源标识的字段名为If-Modified-Since放在请求头里面
ETag:资源对应的唯一字符串后续访问的时候发送请求和资源标识的字段名为If-None-Match放在请求头里面优先使用Etag
Last-Modified的值只精确到秒级
文件如果每隔一段时间都重复生成,但内容相同,Last-Modified会每次返回资源文件,即便是内容相同。 但是ETag可以判断出文件内容相同就返回304,使用缓存
总结了增加访问效率,计算机有域名缓存机制,当访问过某个网站并得到其IP后,会将其域名和IP缓存下来,下一次访问的时候,就不需要再请求域名服务器获取IP,直接使用缓存中的IP,提高了响应的速度。 当然缓存是有有效时间的,当过了有效时间后,再次请求网站,还是需要先请求域名解析。
但是域名缓存机制也可能会带来麻烦。 例如IP已变化了,仍然使用缓存中的IP来访问,将会访问失败。 再如同一个域名在内网和外网访问时所对应的IP是不同的,如在外网访问时通过外网IP映射到内网的IP。 同一台电脑在外网环境下访问了此域名,再换到内网来访问此域名,在DNS缓存的作用下,也会去访问外网的IP,导致访问失败。 根据情况,可以手动清除DNS缓存或者禁止DNS缓存机制。 \在你的chrome浏览器中输入:chrome://dns/,你可以看到chrome浏览器的DNS缓存。 系统缓存主要存在/etc/hosts(Linux系统)中


