2015-11-02 74 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實際上增加了更多關於文件名爲何關鍵的細節。這只是緩存的目的,文件名實際上很重要,一旦你有一個分佈式系統運行在多個節點上。 –

相關問題