我怎样才能使快车做校验和caching?

我知道maxAge伪指令的静态内容:

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

不过,我想build立一个系统,其中:

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

我知道这通常是通过校验和来完成的,即: 将所有资源与校验和一起作为URL的一部分 。 旧的URL永远被caching,新的内容意味着新的URL。

我怎样才能expression这个呢?

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

节点静态资产做这个expression。

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

然后在一个模板中:

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

也有类似的静态到期 。