2012-11-18 49 views
1

我有,我想緩存頁面,該頁面顯示的最近的評論和最近發表的文章列表列表(無論是從數據庫中取出)HTTP緩存最新修改的時間

我打算使用Last-Modified在我HTTP Headers實現緩存,通過

要獲得最新修改的時間,將使用查詢,如

SELECT updatedat from comments, articles ORDER BY updateat DESC LIMIT 1 
從我的數據庫設置 Last-Modified最新 updatedat時間戳字段

是否高效?

然後我會比較請求的If-Modified-Since與來自DB's (updatedat field)的最新的時間戳來確定天氣重新加載數據或只設置報頭類型來Not Modified (304)

+0

您的查詢產生兩個表的笛卡爾乘積作爲中間結果;你想在那裏查詢什麼?你想知道兩個表的最新日期嗎? – SingleNegationElimination

+0

是的,我希望得到最新的日期時間(這兩個表格中最大的一個) – Akash

回答

2

在問題將索引上的列(updatedat)然後使用MAX函數。

SELECT MAX(joint.updatedat) FROM (
    SELECT MAX(a.updatedat) updatedat FROM articles a 
    UNION 
    SELECT MAX(c.updatedat) updatedat FROM comments c 
    ) joint; 

確保查詢的列有一個索引,在表。

+0

評論表包含文章和頁面的評論(每個頁面都有一個自定義url,並從一篇文章中脫穎而出) – Akash

+0

您無法做到爲了從這兩個表中獲得最大值,您需要分別確定每個表中的最大值,然後選擇兩個結果中較大的一個。 – Perception

+0

查看我的解決方案的更新答案。 – Perception