2010-09-18 157 views
2

我注意到,在我的生產環境(我有memcached實施)在螢火蟲中看到一個緩存控制 - max-age頭,任何時候我看着一個索引頁面(例如帖子)。最大年齡與nginx /乘客/ memcached/rails2.3.5

Cache-Control max-age=315360000 

在我的開發環境中,頭像如下所示。

Cache-Contro private, max-age=0, must-revalidate 

據我知道我沒有做什麼特別的與我的nginx.conf文件來指定常規內容最多的年齡,我有到期-MAX集對CSS,JPG等。這裏是我的Nginx的。的conf文件..

http://pastie.org/1167080

那麼,爲什麼這個緩存控制被設定?我怎樣才能控制這個緩存控制,因爲這樣的副作用有點不好。這是發生了什麼事。

1 - 用戶請求all_posts上市得到的10頁(分頁)

2列表 - 用戶視圖第1頁,2 3和創建相應的高速緩存。

3 - 用戶返回第1頁,Firefox甚至不向服務器發送請求。通常情況下,我會期待它會重新計算並擊中第2步中創建的緩存。

另一個問題是,如果一個新的職位已經創建,現在緩存刷新,它應該在第1頁的頂部,用戶不會看到它..因爲瀏覽器沒有打服務器。

請幫忙!

感謝

更新:

我試着在我的索引操作設置expires_now。沒有什麼區別,最大年齡仍然是相同的大值。

這可能是我的max-age正則表達式的問題嗎?我基本上希望它只匹配資產文件(圖像,JS,CSS等)

回答

0

我認爲你是對的,這是你的max-age正則表達式的問題。

你對這種模式匹配:^.+.(jpg|jpeg|gif|png|css|js|swf)?([0-9]+)?$

因爲你有問號(「這部分是可選」)兩個括號內的部分後,正則表達式的唯一的強制性的部分是請求的URI至少有兩個字符(.+.)。換句話說,它幾乎可以滿足您網站的每個請求。

這是我們使用的模式:這將只匹配了以點結束路徑請求,然後這七個模式之一\.(js|css|jpg|jpeg|gif|png|swf)$