如何使Express表示基于校验和的缓存?

时间:2015-01-14 12:10:09

标签: javascript node.js http caching express

我知道Express'maxAge指令用于静态内容:

app.use(express.static(__dirname + '/public', { maxAge: 86400000 }));

但是我想建立一个系统:

  • 浏览器缓存任何未更改的资源
  • 浏览器获取已更改的最新资源版本

我知道这通常使用校验和来完成,即:使用校验和作为其URL的一部分来提供所有资源。旧网址将永久缓存,新内容意味着新网址。

如何在快递中进行设置?

1 个答案:

答案 0 :(得分:3)

一些研究表明,这称为指纹识别。请参阅http://guides.rubyonrails.org/asset_pipeline.html#what-is-fingerprinting-and-why-should-i-care-questionmark(该文档适用于Rails,但HTTP概念当然与节点相同)。

Node Static Asset这样做是为了表达。

var staticAsset = require('static-asset');
app.use(staticAsset(__dirname + "/public/") );

然后在模板中:

<script src="{{ assetFingerprint("/client.js") }}"></script>

还有Static Expiry同样有效。