什么是静态资源
静态资源是指不随着请求的不同而发生变化的资源,例如 HTML、CSS、JavaScript、图片、音频等等。对于这些静态资源,我们可以对其进行缓存,以提高访问速度。
Express.js 如何实现静态资源的访问
Express 提供了一个 static
中间件来处理静态资源的访问。我们只需要通过以下代码启用该中间件即可:
app.use(express.static('public'))
其中 public
为存放静态资源的文件夹名称,可以替换成自己指定的文件夹名称。
Express.js 如何实现静态资源的缓存
为了提高访问速度,我们可以在客户端和服务器端分别进行缓存。
客户端缓存
客户端缓存主要通过设置 HTTP 响应头来实现,其中最常用的响应头是 Cache-Control
和 Expires
。
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 小时:
app.use(express.static('public', { maxAge: 60*60*1000 }))
其中 maxAge
的单位为毫秒,这里设置为 1 小时(3600 秒)。
服务器端缓存
服务器端缓存主要通过使用缓存模块来实现。目前比较流行的缓存模块有 Memory Cache、Redis、Memcached 等,这里以 Memory Cache 为例说明如何使用。
const NodeCache = require("node-cache"); const myCache = new NodeCache({ stdTTL: 600, checkperiod: 60 });
以上代码创建了一个名为 myCache
的缓存实例,其中 stdTTL
为缓存的默认过期时间(单位为秒),这里设置为 10 分钟,checkperiod
为检查过期时间的时间间隔(单位为秒),这里设置为 1 分钟。
在具体的处理路由中,我们可以先查询缓存中是否已有该资源,如果有则直接返回缓存,否则再去读取文件并缓存。示例如下:
-- -------------------- ---- ------- -------------------------- ------------- ---- - ----------------------- ------------- ------ - -- ------ - -- ------- - ----------------------- -------------- ---------------- - ---- - -------------------------------------- ------------- --------- - -- ------ - ----------------------- --------- ------------- -------- - -- ----- ----- ---- ----------------------- -------------- ------------------- --- - ---- - ---------------------- - --- - - --- ---
以上代码先查询缓存中是否有该资源,如果有则直接返回缓存;否则读取静态资源文件并缓存。
总结
通过上述方法,我们可以实现 Express.js 中静态资源的访问和缓存。具体使用时,应根据实际需求来选择不同的缓存模式和过期时间,以达到更好地性能优化效果。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/6457066d968c7c53b09e2dd0