Express.js 如何实现静态资源的访问与缓存

阅读时长 4 分钟读完

什么是静态资源

静态资源是指不随着请求的不同而发生变化的资源,例如 HTML、CSS、JavaScript、图片、音频等等。对于这些静态资源,我们可以对其进行缓存,以提高访问速度。

Express.js 如何实现静态资源的访问

Express 提供了一个 static 中间件来处理静态资源的访问。我们只需要通过以下代码启用该中间件即可:

其中 public 为存放静态资源的文件夹名称,可以替换成自己指定的文件夹名称。

Express.js 如何实现静态资源的缓存

为了提高访问速度,我们可以在客户端和服务器端分别进行缓存。

客户端缓存

客户端缓存主要通过设置 HTTP 响应头来实现,其中最常用的响应头是 Cache-ControlExpires

  • Cache-Control:用于指定缓存资源的时间,例如设置 Cache-Control: max-age=3600 意味着该资源可以缓存 1 小时,之后需要重新请求。
  • Expires:用于指定缓存资源的过期时间,例如设置 Expires: Wed, 21 Oct 2020 07:28:00 GMT 意味着该资源在 2020 年 10 月 21 日 07:28:00 过期,之后需要重新请求。

我们可以通过以下代码将响应头设置为缓存 1 小时:

其中 maxAge 的单位为毫秒,这里设置为 1 小时(3600 秒)。

服务器端缓存

服务器端缓存主要通过使用缓存模块来实现。目前比较流行的缓存模块有 Memory Cache、Redis、Memcached 等,这里以 Memory Cache 为例说明如何使用。

以上代码创建了一个名为 myCache 的缓存实例,其中 stdTTL 为缓存的默认过期时间(单位为秒),这里设置为 10 分钟,checkperiod 为检查过期时间的时间间隔(单位为秒),这里设置为 1 分钟。

在具体的处理路由中,我们可以先查询缓存中是否已有该资源,如果有则直接返回缓存,否则再去读取文件并缓存。示例如下:

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

以上代码先查询缓存中是否有该资源,如果有则直接返回缓存;否则读取静态资源文件并缓存。

总结

通过上述方法,我们可以实现 Express.js 中静态资源的访问和缓存。具体使用时,应根据实际需求来选择不同的缓存模式和过期时间,以达到更好地性能优化效果。

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

纠错
反馈