2014-09-28 69 views
0

我在Apache上提供一個Django應用程序,在我最近的部署之後,我注意到很多用戶正在服務於新版本的主HTML文件,但他們仍然從他們的Cache中挑選舊的JS文件。強制靜態文件永不緩存

我試過類似patch_cache_control(response, no_cache=True, no_store=True, must_revalidate=True)的東西,但這似乎不適用於靜態文件。

有沒有一種方法可以在訪問頁面時始終強制從服務器重新獲取每個靜態?

+0

Google:'E-Tag','Last-Modified-Since'。在提供靜態文件時,Apache應該能夠添加這些頭文件。您的瀏覽器將根據這些標頭確定是否應將靜態文件從其緩存中取出。另外:爲了提高性能,直接提供靜態文件,而不是通過Django。這應該僅由您的網絡服務器處理。 – Bjorn 2014-09-28 19:51:56

回答

0

你可以用你的標題做很多事情。

或者你可以使用類似{% static 'js/jquery.js' %}?v={{ settings.CURRENT_VERSION }}的東西,這樣瀏覽器會認爲你使用的是一個全新的文件,因爲文件的名稱可能類似於jquery.js?v=1。我不會真的建議這樣做,但它是一個非常快速的黑客攻擊。