网站性能优化技巧:利用浏览器缓存提升页面速度

阅读时长 7 分钟读完

在当今互联网时代,网站性能优化已经成为了网站开发和运维工作中至关重要的一环。而利用浏览器缓存可以是一种简单有效的优化方式。本文将为大家介绍利用浏览器缓存提升网站性能的技巧及实现方法,以帮助开发者优化网站的性能表现。

什么是浏览器缓存

浏览器缓存指的是浏览器在向服务器请求资源时,将该资源缓存到本地硬盘或内存中,此后再次请求该资源时不必从服务器重新获取,而是通过本地缓存提供服务。在浏览器缓存中,每一个缓存条目都由一个缓存键(URL)及对应的缓存值(响应)组成。

浏览器缓存可以分为两种:强缓存和协商缓存。

强缓存

强缓存是指浏览器在缓存时间内直接从本地缓存中获取资源,无需再向服务器发送请求。强缓存可以通过设置 Expires、Cache-Control 这两个请求头来实现。

Expires

Expires 是 HTTP/1.0 的产物,它的作用是告诉浏览器缓存的过期时间,即在该时间之前再次访问该资源,直接读取缓存。但是,由于 Expires 是 GMT 格式的时间,如果服务器与浏览器时间相差较大,则会造成缓存失效,因此这种控制方式已逐渐被弃用。

Cache-Control

Cache-Control 是 HTTP/1.1 的产物,它提供了更多的控制选项,在前端开发中使用更为广泛。Cache-Control 的值可以包含以下指令:

  • no-cache:不使用本地缓存,每次都从服务器端请求最新的资源;
  • no-store:不使用本地缓存,也不存储缓存内容,每次都从服务器端请求最新的资源;
  • max-age:缓存的时间,以秒为单位。

协商缓存

当缓存过期时,浏览器需要向服务器发送请求以获得最新资源。此时,服务器可以选择返回最新资源,也可以选择返回“未修改”状态码,告知浏览器直接使用本地缓存。协商缓存可以通过设置 Last-Modified、If-Modified-Since、ETag、If-None-Match 这些响应头来实现。

Last-Modified 和 If-Modified-Since

Last-Modified 表示最后修改时间,If-Modified-Since 表示本地缓存的最后修改时间。服务器在收到请求时,同时将资源的最后修改时间通过 Last-Modified 返回给浏览器。浏览器再次请求该资源时,会带上 If-Modified-Since 头信息,表示本地缓存的最后修改时间。服务器收到请求后,会判断资源的最后修改时间是否晚于 If-Modified-Since 所指定时间。若最后修改时间晚于 If-Modified-Since,则返回新的资源;否则返回 304 Not Modified 状态码,让浏览器使用本地缓存。

ETag 和 If-None-Match

ETag 是对文件进行哈希计算后得到的唯一标识符。服务器在收到请求时,同时将资源的 ETag 通过 ETag 头返回给浏览器。浏览器再次请求该资源时,会带上 If-None-Match 头信息,表示上次获取到的资源的 ETag 标识符。服务器收到请求后,会判断资源的 ETag 是否与 If-None-Match 所指定的 ETag 相同。若相同,则返回 304 Not Modified 状态码,让浏览器使用本地缓存,否则返回新的资源。

利用浏览器缓存提升网站性能

利用浏览器缓存可以大大降低重新请求资源的次数,进而提高页面的加载速度和响应时间。下面介绍几种利用浏览器缓存提升网站性能的技巧。

静态资源缓存

静态资源指的是 css、js、图片等不会频繁变化的资源。这些资源可以被缓存起来,以节省页面加载时间。静态资源缓存在服务器端生成缓存策略并应用于资源之后,可以让浏览器在请求同一资源时直接从缓存中读取,无需再次从服务器获取,进而提高页面加载速度。

静态资源缓存可以通过设置 Cache-Control 或 Expires 头信息来实现。因为静态资源一般都不会频繁改变,所以它们的缓存时间可以设置较长,以减少重复请求。

动态资源缓存

动态资源指的是页面数据、接口数据等根据请求不同而发生变化的资源。由于动态资源的变化无法通过缓存策略来控制,因此需要使用协商缓存来优化它们的请求。使用协商缓存可以让浏览器直接使用本地缓存,避免不必要的请求和响应,提高页面的加载速度。

协商缓存可以通过设置 Last-Modified、ETag 头信息来实现。当浏览器请求动态资源时,服务器返回资源的 Last-Modified 或 ETag,表示该资源的唯一标识符。浏览器下一次请求该资源时带上相应的头信息,服务器根据头信息比较得出是否需要返回新资源的数据。

启用 Gzip 压缩

启用 Gzip 压缩可以减少页面传输的数据量,从而提高页面的加载速度。Gzip 是一种文件压缩技术,可以将文件的体积压缩到原始大小的一半以下,极大地减少数据传输的时间。

在启用 Gzip 压缩之前,需要先检查服务器是否支持 Gzip 压缩。如果支持,则可以通过设置响应头开启 Gzip 压缩。

媒体资源优化

媒体资源包括图片、音频、视频等文件,它们占据了大量的带宽和存储空间。为了提高页面的加载速度,需要对媒体资源进行相应的优化。

  • 图片优化:使用 WebP 格式、调整图片大小、去除图片元数据等。WebP 是 Google 推出的一种新型图片格式,可以比传统格式更好地压缩图片,减少带宽占用和加载时间;
  • 音频和视频优化:使用压缩格式、缩短时长、提高码率等。可以选择一些压缩格式,如 MP3、AAC、H.264 等,减少带宽占用,同时通过缩短时长、提高码率等方式让媒体资源更小、更快。

示例代码

下面是利用浏览器缓存优化静态资源的示例:

-- -------------------- ---- -------
--------- -----
------
------
  -----------------------
  ----- ----------------
  ----- --------------- ---------------------------- -------------------
  ----- ---------------- ----------------------
  ------- -----------------------------
-------
------
  -----------------
  ----------------------
  ---- ---------------------- -----------
  ------- ---------------------------
-------
-------

服务器端设置响应头:

总结

利用浏览器缓存可以有效地提高网站的性能表现。前端开发者可以通过设置缓存策略、启用 Gzip 压缩、媒体资源优化等方法,优化网站的页面加载速度和响应时间。强烈建议开发人员熟悉这些技巧,以获得更流畅、更快速的用户体验,提升网站的竞争力。

来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/649537ef48841e9894278c8d

纠错
反馈