我試圖從數據庫中緩存由php腳本生成的JSON內容。但是數據集非常穩定,只有很少的更改或添加。含義數據可能會持續數週。 問題是它包含一個LOB列,只需要很長的時間來加載,比從文本文件提供json的時間要長,這意味着git是使數據庫調用變慢的實際數據庫調用。緩存JSON:Apache,PHP,jQuery
我在分頁(數據表jQuery插件)中顯示數據,並且每次頁面更改數據都會從數據庫中再次獲取,並且還會返回到上一頁。
我嘗試以下操作:
"beforeSend": function (request)
{
request.setRequestHeader("cache-control", "max-age=86400");
},
不工作。
我試圖指定mod_expires:
ExpiresActive On
ExpiresDefault "access plus 4 hours"
ExpiresByType application/javascript "access plus 1 day"
ExpiresByType application/json "access plus 1 day"
不工作。
因此,我假設所有這些設置僅適用於文件系統上的真實文件,而不適用於動態生成的東西?
我更喜歡使用Apache/PHP的可配置方法,因爲我不能完全控制服務器。
編輯之前,首先回答:
注意,JSON包含多個記錄,以便一鍵/值存儲將是一種難以avhieve。密鑰必須包含很多內容:查詢/過濾表達式和所請求的分頁頁面。
編輯2:
Development and prod。都是Windows ...所以memcached是不是一個真正的選擇...
編輯3:
我試過kristovaher解決方案,但不起作用。高速緩存標題是不是在響應所有的時間和一些plaing周圍後,我相信我確定了問題: 我需要使用NTLM身份驗證,並做2請求後不久彼此工作正常,但是,如果你等待位,似乎用戶被重新認證,然後緩存控制頭被「丟失」。
也許有可能,您作爲開發人員禁用了瀏覽器緩存。 – wormhit 2012-02-17 07:44:56
你使用什麼樣的請求 - POST或GET? – core1024 2012-02-17 07:51:47
GET請求。 @ wormhit9:現在你提到它了我記得我曾經這樣做過,但是現在有一個新的FF安裝,並且檢查了network.http.use-cache和browser.cache.offline.enable,它們都是true(默認)。有趣我最近從來沒有任何緩存問題,但按Ctrl + F5通常工作得很好。 – 2012-02-17 08:01:11