定義:資源=數據庫記錄的收集,再生=處理這些記錄,並輸出相應的HTML如何使用後臺作業緩存頁面?
當前流量:
- 接收客戶端請求
- 檢查資源在緩存
- 如果沒有在高速緩存或緩存中過期,重新生成
- 返回結果
問題在於再生步驟可以將單個服務器進程捆綁10-15秒。如果有幾個用戶請求相同的資源,那麼可能會導致多個進程同時重新生成完全相同的資源,每個進程需要10-15秒。
如果讓前端信號有一些後臺進程說「嗨,爲我重新生成這個資源」不是更好嗎?
但是,它會顯示給用戶什麼? 「重建」是不可接受的。所有資源必須提前緩存。這可能是一個問題,因爲數據庫幾乎會在文件系統上重複(太大而不適合內存)。有沒有辦法避免這種情況?不理想,但它似乎是唯一的出路。
但是接下來還有一個問題。如何讓相同的兩個進程同時請求資源的再生?當前端要求重新生成相同資源時,後臺進程可能會重新生成資源。
我正在使用PHP和Zend框架,以防萬一有人想提供特定於平臺的解決方案。不過它並不重要 - 我認爲這個問題適用於任何語言/框架。
謝謝!
緩存的html用戶特定的或相同的所有用戶?緩存過期的標準是什麼?也許如果你提供一些細節,在你的特定情況下建議一些東西會更容易,因爲在這裏很難提出通用的解決方案。 – serg 2010-05-14 18:11:45