2011-08-06 33 views
0

如何緩存數據庫重頁面(幾乎12tables它引用到),這樣我如何緩存數據庫重操作在PHP當數據庫更新

  1. 給用戶最新的頁面始終
  2. 我有一個緩存輸出頁面的HTML輸出。

我已經擁有一個緩存系統,其中頁面緩存1天,並在其超過1天時刷新。但是,這需要1天(或任何時間間隔,以保持在scrip)的變化受到影響。我可以讓它做得更快嗎?我的意思是它應該在這些表中的行/列更新時自行更新。

因爲有12個表格(每個頁面參照1行),並且它與動態生成它一樣好,所以有一個與行更新時間匹配的時間戳會再次變得很重。除了代碼已經編寫完成之外,通過每個可能插入/更新/刪除表的操作都非常困難。

+0

是否有可能創建一個每15分鐘左右會產生靜態HTML的cron作業? (因此減少1天滯後。) –

回答

1

您需要對數據庫結構進行非規範化......最不痛苦的方法是創建一些「緩存」表,其中只有那些正在顯示的列......因此,您將擁有大約70%的表和字段。 ..減少聯接,智能索引...

之後,你需要寫一個cron作業,這將使這些緩存表與真正的同步。 您可以將一些標誌字段(例如is_modified或date_last_modified等)添加到您的真實表格中,並使用觸發器更新這些字段。在那之後,你的cron工作將會與你的真實表格一致,例如。在去年2-3分鐘,並會相應地同步這些表...

這是一個非常特殊的項目解決方案,但我不得不使用這種高速緩存技術,許多項目的成功...

+0

謝謝,我使用數據庫中的緩存機制和觸發器來實現所需的目標。也謝謝你的回答,因爲我沒有6周的時間:P – footy

+0

我很高興與其他人分享我的經驗:) – GooGo