【问题标题】:Cache static pages and content nodejs缓存静态页面和内容nodejs
【发布时间】:2014-07-10 21:22:20
【问题描述】:

我有一个使用nodejs缓存的静态内容,据我所知有两种方法:

  1. 这可以使用 nodejs 来完成:

    app.use(express.static(path.join(__dirname, 'public'), { maxAge: oneDay }));

  2. x.appcahe文件添加静态内容缓存,然后在html标签中添加manifest属性:

    <html manifest="x.appcache">

所以我的问题是这两种方式有什么区别?

【问题讨论】:

标签: javascript html node.js


【解决方案1】:
  1. 首先,node.js 服务器使用 express.js 功能设置Cache-Control header
  2. 在第二种情况下,HTML 指定了要由浏览器缓存的清单。

如果您搜索“缓存控制与 html 清单”,您会发现大量详细信息超出了我在单个答案中所能写出的内容。但是,另一个标题为HTML 5 Cache Manifest Vs. Etags, Expires or cache-control header 的问题有一个很好的总结和引用

HTML5 缓存清单与 HTML5 缓存清单之间的主要区别 传统的 HTTP 标头:

  • 对于缓存清单,您需要浏览器支持
  • 对于 HTTP 标头,您当然还需要浏览器支持,但它更通用
  • 您可以通过缓存清单更好地控制缓存
  • 您的网站或 Web 应用可以在完全没有连接的情况下离线正常工作
  • 您可以拥有每个资源的两个版本 - 用于离线和在线使用

最后一点非常方便,可让您轻松交换部分 需要连接的网站,例如。包含可选的占位符 cmets 用户没有获得完整的功能 连接或任何你想要的。

还有一些兼容性问题,因为某些浏览器并不总是按照标准运行......所以这也值得研究并确定哪种(缓存控制与清单)最适合您的情况。

【讨论】: