什么是浏览器缓存

148 阅读3分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第30天,点击查看活动详情

浏览器缓存

什么是浏览器缓存

浏览器缓存涉及访问者的浏览器将您网站的资源(例如,HTML文件,JavaScript文件和图像)下载到其本地驱动器。这加快了后续访问期间的页面加载时间,并减少了带宽使用量。

该过程由浏览器的内部缓存策略控制,该策略指示要缓存的资源以及缓存的时间段。作为网站所有者,您可以通过 HTTP 缓存标头(即缓存控制和 Etag 标头)对此策略进行一定程度的控制。

Cache-Control 有几个参数,包括生存时间 (TTL),您可以使用这些参数来定义资源在过期之前在浏览器缓存中存储的时间。

Etag 标头允许您标识资源的特定版本,例如 .当浏览器收到 Etag 标头时,会根据缓存中的 Etag 值对其进行检查。匹配表示资源可以从本地(浏览器)缓存加载。否则,需要从服务器再次下载请求的资源。Etag: "pub1259380237;gz"

浏览器缓存与代理服务器缓存

代理服务器缓存与浏览器缓存的不同之处在于,网站资源存储在中间服务器中,而不是存储在访问者的本地驱动器上。这会导致向多个访问者提供单个缓存资源副本。新鲜度通过服务器的缓存策略得到保证,并依赖于代理和源服务器之间的定期通信。

代理和源服务器之间的通信

例如,当访问者访问带有标题图像的博客时,代理服务器会在其缓存中查找该图像。如果这是第一次访问映像,则服务器需要从源请求它。下次从代理服务器访问文章时 - 任何访问者 - 该图像将已经在代理缓存中可用。

虽然浏览器缓存几乎完全由用户控制,并且可以随意删除或修改,但代理服务器缓存发生在CDN端。这为您提供了更高程度的控制和灵活性,可以控制哪些资源以及缓存频率 — 包括通过使用智能算法来跟踪资源使用情况并确定缓存动态生成内容的机会的软件。

最佳做法是同时规范浏览器缓存和代理缓存。代理缓存可以在更复杂的方案中提供帮助,例如处理动态或频繁更新的资源;当资源已过期时;或清除浏览器缓存时。虽然企业可以管理自己的代理,但大多数企业发现将缓存和其他内容交付任务卸载到CDN更容易。

CDN 如何简化缓存

在代理服务器中管理缓存策略通常涉及仔细标记文件类型,甚至单个文件,这可能非常耗时且容易出错。

CDN 通过提供单个仪表板来简化该过程,该仪表板允许管理员根据需要覆盖缓存标头指令,并对特定文件和文件类型进行精细控制。

如前所述,CDN还通过使用机器学习和其他高级自动化技术允许缓存一些动态生成的对象来优化动态内容交付的过程。这些功能使您可以更轻松地优化代理和浏览器(尽可能)的侧缓存,并加快向用户交付内容的速度。