2015-11-02 71 views
0

我analayzed网络请求,同时加载书签,这是我所看到的:为什么bit.ly会加密其javascript文件的名称?

enter image description here

其中的一个文件是lodash,我可以通过看它看。

我知道git通过哈希来存储它的一些文件,但是为什么用这种方式将它们发送到客户端呢?

+2

“加密”意味着有人会*解密它,我怀疑。可能只是缓存文件的优雅方式,并确保您永远不会使用过时的版本,因为*文件名是其内容的散列*;或类似的规定。 – deceze

回答

2

当网站发布新资产时,这将强制缓存刷新。

这可以让您在很长一段时间内缓存f85.js。那么当您更改资产时,您将拥有一个新的哈希值,这将强制浏览器下载更新的版本。

这与添加get参数(例如somefile.js?hash=a34d)几乎相同。但文件名允许您在没有停机时间的情况下部署到多个节点。在部署期间,您希望您的资产的每个版本都可以在您的CDN上使用。这是因为在部署完成之前,一些用户将访问旧版本和一些新版本。因此,您绝对需要使用旧资产才能继续访问运行旧版应用的节点的用户。哈希强制使用单个文件名,这意味着您必须在部署过程中关闭应用程序 - 否则访问旧版本的用户会破坏资产。

+0

你可以使用附加到我相信的文件名上的get请求来做同样的事情。 –

+0

@cadegalt是的,但文件名与CDN一起使用更方便。但是,它与添加get参数相同。 –

+0

@cadegalt实际上增加了更多关于文件名为何关键的细节。这只是缓存的目的,文件名实际上很重要,一旦你有一个分布式系统运行在多个节点上。 –

相关问题