2012-05-29 99 views
1

我在我的網站的一個頁面上使用了rails頁面緩存(與memcache)。緩存的過期時間爲24小時。但緩存值包含一些名爲asset-FINGERPRINT.css的資產Rails資產管道指紋識別和頁面緩存

如果我在緩存存在的24小時內運行部署,指紋會更改,但我的緩存值中仍保留舊版本。所以當我嘗試獲取資產時,我獲得了404。

我有多個版本的頁面,因此我無法在每次部署後手動過期。我的問題是,有沒有人遇到同樣的問題,解決方案是什麼?

+0

恕我直言,在這種情況下,你應該重置緩存 – alexkv

+0

恐怕服務器的負載將達到屋頂,如果我重置緩存 – sailor

回答

2

如果我是你,我不會刪除舊版本的資產。除了你面臨的問題之外,你可能不希望舊版本的HTML與新的CSS或Javascript一起使用 - 如果你不小心,這很容易破壞。

由於資產的每個版本都有指紋,因此可以同時提供當前版本和多個以前的版本。這樣做的一種方法是將公共/資產的符號鏈接到不同版本之間不更改的文件夾(如果您使用capistrano進行部署,如果使用默認資產管道集成,則會發生這種情況)。

所有這一切說,在你覺得你永遠不能清除緩存的情況下,對我來說感覺不穩定。

+0

這是一個好主意!是的,它是不穩定的,但它是暫時的;-) – sailor