美文网首页前端缓存
【前端】作为前端应当了解的Web缓存知识

【前端】作为前端应当了解的Web缓存知识

作者: caikunhai | 来源:发表于2017-02-08 11:35 被阅读56次

    缓存优点

    通常所说的Web缓存指的是可以自动保存常见http请求副本的http设备。对于前端开发者来说,浏览器充当了重要角色。除此外常见的还有各种各样的代理服务器也可以做缓存。当Web请求到达缓存时,缓存从本地副本中提取这个副本内容而不需要经过服务器。这带来了以下优点:

    缓存减少了冗余的数据传输,节省流量

    缓存缓解了带宽瓶颈问题。不需要更多的带宽就能更快加载页面

    缓存缓解了瞬间拥塞,降低了对原始服务器的要求。

    缓存降低了距离延时, 因为从较远的地方加载页面会更慢一些。

    缓存种类

    缓存可以是单个用户专用的,也可以是多个用户共享的。专用缓存被称为私有缓存,共享的缓存被称为公有缓存。

    私有缓存

    私有缓存只针对专有用户,所以不需要很大空间,廉价。Web浏览器中有内建的私有缓存——大多数浏览器都会将常用资源缓存在你的个人电脑的磁盘和内存中。如Chrome浏览器的缓存存放位置就在:C:\Users\Your_Account\AppData\Local\Google\Chrome\User Data\Default中的Cache文件夹和Media Cache文件夹。

    公有缓存

    公有缓存是特殊的共享代理服务器,被称为缓存代理服务器或代理缓存(反向代理的一种用途)。公有缓存会接受来自多个用户的访问,所以通过它能够更好的减少冗余流量。

    下图中每个客户端都会重复的向服务器访问一个资源(此时还不在私有缓存中),这样它会多次访问服务器,增加服务器压力。而使用共享的公有缓存时,缓存只需要从服务器取一次,以后不用再经过服务器,能够显著减轻服务器压力。

    事实上在实际应用中通常采用层次化的公有缓存,基本思想是在靠近客户端的地方使用小型廉价缓存,而更高层次中,则逐步采用更大、功能更强的缓存在装载多用户共享的资源。

    no-store 绝对禁止缓存任何资源,也就是说每次用户请求资源时,都会向服务器发送一个请求,每次都会下载完整的资源。通常用于机密性资源。

    关于Cache-Control的使用,见下面这张图(来自大额

    上文的demo中我们见到过服务器端如何验证Etag:

    由于Etag有服务器构造,所以在集群环境中一定要保证Etag的唯一性

    If-Modified-Since与Last-Modified

    这两个是HTTP1.0中用来验证资源是否过期的请求/响应头,这两个头部都是日期,验证过程与Etag类似,这里不详细介绍。使用这两个头部来验证资源是否更新时,存在以下问题:

    有些文档资源周期性的被重写,但实际内容没有改变。此时文件元数据中会显示文件最近的修改日期与If-Modified-Since不相同,导致不必要的响应。

    有些文档资源被修改了,但修改内容并不重要,不需要所有的缓存都更新(比如代码注释)

    关于缓存的更新问题,请大家看看这里张云龙的回答,本文就不详细展开了。

    本文demo代码如下:

    相关文章

      网友评论

        本文标题:【前端】作为前端应当了解的Web缓存知识

        本文链接:https://www.haomeiwen.com/subject/fauvittx.html