web前端缓存机制

前端缓存机制有多种,如浏览器缓存、CDN缓存、DNS缓存、代理服务器缓存等。

CDN缓存

CDN全称是Content Delivery Network,即内容分发网络。CDN的原理是将资源存放在各地的缓存服务器上,当用户请求资源时,从就近的服务器上返回缓存的资源,而不需要每次都从源服务器获取,减轻源服务器的压力,又能提升用户的访问速度。

浏览器缓存

浏览器可以将用户请求的资源进行缓存,存放在本地。浏览器缓存一般通过请求头来设置。
与浏览器缓存有关的头部有:

  • Cache-Control:在请求头中使用时,可选值有:



    在响应头中使用时,可选值有:



    一般比较常用的是max-age、no-cache、no-store
  • Expires:服务器告诉浏览器缓存的过期时间。在这个时间之前,都会直接从缓存中读取文件。
    下面的两对报文信息是用来做缓存校验的(验证缓存是否有效),当服务器的资源更新了,客户端需要及时刷新缓存,或者当客户端的资源过期了,但服务器上的资源尚未更新,此时不需要重新发送数据。
  • Last-Modified和If-Modified-Since
    首先,服务端返回文件给客户端时,会将该文件的最后修改时间通过Last-Modified传回给客户端。客户端下一次请求时,将这个最后修改时间通过If-Modified-Since字段传给服务器,服务器查看该时间是否与文件的最后修改时间一致,如果一致则返回304,使用浏览器缓存的文件,如果不一致则返回新文件并带上Last-Modified。
  • ETag和If-None-Match
    由于Last-Modified和If-Modified-Since的最小时间单位是秒,如果文件在一秒内多次改变,服务器无法判断出来,文件可能无法及时更新。为了解决文件修改时间不精确带来的问题,ETag就出来。服务器在返回文件给浏览器时,同时带上文件的唯一标识ETag,当浏览器的缓存文件过期时,浏览器带上请求头If-None-Match(即上一次请求的ETag),服务器对比If-None-Match与当前文件的ETag,如果一直则返回304,不一致则再次返回文件和ETag。

DNS缓存

浏览器会将服务器的域名与IP地址的映射缓存在本地,这样用户在访问网站时,不用每次都去查询DNS映射表。

代理服务器

在浏览器和服务器之间架设的一个服务器 ,这个代理服务器会帮助浏览器去请求页面,然后将页面进行处理和压缩(例如压缩图片和文件),使页面变小,再传输给浏览器。大部分代理服务器都有缓存的功能,如果浏览器所请求的文件在它本机中存在且是最新的,就不需要再从源服务器请求数据,提高了浏览速度。

预加载机制

在浏览某个页面时,浏览器会判断页面的关联内容,进行预加载。用户在浏览A页面时,就加载好B页面,这样当用户去访问B页面时,B页面很快就出来,提升了用户体验。但这个机制有一定的缺陷,就是预判不一定准确,可能会造成流量和资源的浪费。

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。