2014-04-03 20 views
4

在我們的Web應用程序中,我們有一個網頁,其中包含許多組件,每個組件都使用來自數據庫的數據進行呈現,服務器端緩存用於存儲生成的組件以用於將來的請求。而且,我們還爲整個頁面維護了一個全局的「最後修改」時間戳,這是最後一次修改此網頁上的任何數據(在數據庫中),並且如果瀏覽器緩存具有新版本,我們將返回304 HTTP響應。如何在啓用緩存時連續部署Web應用程序?

總之,我們使用服務器端緩存和客戶端緩存來提高性能。

在我們考慮部署新代碼之前,這是很好的。當部署新代碼(如html)時,不僅客戶端緩存無效,還必須清除服務器端緩存。我們必須將最後修改的時間設置爲我們的代碼部署時間,並清除服務器端緩存中的所有內容。 如果我們定期部署代碼,這並不是很理想。由於頁面數據庫中的數據沒有定期更改,因此我們預計緩存將在很長一段時間內運行。但是部署新代碼會破壞我們的目標。

在這種情況下我們應該做什麼?這裏有沒有'行業最佳實踐'?

回答

0

對於我的項目,當我更改一個文件如css文件時,我將添加一個參數到文件所在的位置。例如,

<link href='default.css?1' type='text/css' rel='stylesheet'> 

並且每次希望重新加載文件而不是從緩存中提取文件時更改編號。

+1

是的,這將適用於js和css標籤。我關心的主要是關於動態html和內聯js,看到緩存級別隨着小代碼變化而失效,這令人沮喪。 – NeoWang

+0

許多打包程序使用CSS或JS文件的散列來實現此目的 – TryingToImprove