使用 Next.js 实现长效缓存的最佳方式

阅读时长 5 分钟读完

在现代的 Web 开发中,缓存是一个很重要的话题。通过缓存可以提高网站的性能,减少服务器压力,也可以降低用户的等待时间。在这方面,Next.js 提供了一种非常方便的方法来实现长效缓存。

什么是长效缓存?

长效缓存是指将站点的资源缓存到用户的浏览器中,以避免重复加载。这通常涉及到在文件名中添加哈希或版本号,在资源更改后使其无法匹配缓存并强制其重新加载。

Next.js 中的缓存机制

Next.js 已经内置了缓存机制。在开发模式下,所有的页面都会被缓存,这样可以避免在每次请求时都重新渲染页面。但是在生产环境下,缓存机制则要更加智能。Next.js 会为每个页面生成一个唯一的哈希(由页面的代码和依赖项计算得出),并将此哈希用于缓存。如果页面中的任何内容发生更改,其哈希也会更改。这意味着客户端会强制重新获取新的页面,并更新缓存。

Next.js 还提供了一些从 CDN 缓存中获取资源的选项。对于需要经常变化的内容(如 user-avatar 或图片),可以使用缓存控制标头来确保 CDN 缓存的资源始终保持最新状态。

实现长效缓存的最佳方式

为了实现长效缓存,我们需要:

  • 将哈希或版本号添加到文件名中
  • 配置文件的缓存控制标头

让我们假设我们有一个名为“home”的页面和一个 JavaScript 文件“app.js”,下面是我们可以使用的方法将其缓存:

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

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

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

------ -------- ---------------- -
  ------ -
    ------ -
      -------- ------------------------------
    --
  --
-
展开代码

上述代码中的关键点有:

  • 头部标签中添加了缓存控制标头,这将确保页面始终从服务器中获取
  • 使用了 getStaticProps 函数获取 buildId,它将在页面的哈希函数中使用
  • SWRConfig 组件旨在确保所有页面在加载之前都会进行数据提取

此外,我们可以在“next.config.js”文件中使用以下代码块将哈希添加到文件名中:

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

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

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

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

  ------ -------
--
展开代码

上述代码中的关键点有:

  • 在“PHASE_PRODUCTION_BUILD”中,我们在“assetPrefix”中添加了哈希,这使得浏览器会重新加载页面,从而在 web 服务器的缓存中更新页面。
  • 我们还在“distDir”中添加了哈希

结语

使用 Next.js 实现长效缓存的最佳方法是添加哈希或版本号,将其配置到缓存控制标头中,并将其添加到资源的文件名中。在“next.config.js”文件中添加 assetPrefix 以确保浏览器重新加载页面,并用新的缓存更新 web 服务器。通过这些简单的步骤,您可以轻松地实现长期缓存,并为用户提供更快、更高效的浏览体验。

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

纠错
反馈

纠错反馈