2012-02-16 71 views
1

我寫了一個可以託管多個客戶/站點的自定義CMS。這些網站及其各個部分存儲在/ client-name/site-name目錄結構中。用PHP重寫條件URL

htaccess通過不存在的索引傳遞每個請求。

'/clients/client-name/site-name/images/img.jpg'並不理想,所以只允許'/images/img.jpg'我已經捕獲了請求,然後我有效地服務於文件的真實位置;頭和所有。我正在爲CSS,JS等做這個。

這一直很好,但是我現在注意到,這不允許的文件被正確緩存,所以每一個頁面都提供它的時候再次加載整個事情這是一種痛苦和看起來可怕。

有沒有人知道解決這個問題的方法? Apache配置或htaccess解決方案會很好,但它需要知道該文件的位置,該位置來自CMS的索引編制的數據庫。

幫助!

+2

您可以通過腳本發送所有必需的與緩存相關的標頭 – zerkms 2012-02-16 22:02:07

回答

2

我通過PHP腳本服務了JavaScript的(我用結合/壓縮JavaScript,所以我成爲一個單一的文件)。

我用下面的標題,以確保它緩存:

header('Content-type: text/javascript'); 
header('Expires: ' . gmdate('D, d M Y H:i:s \G\M\T', time() + 6048000)); 

在我的情況下,原始的下載只需982ms。之後,每個後續請求(Firefox 10.0.1)只需87毫秒時間從緩存中獲取(Firefox 10.0.1)

+0

謝謝,我不知道爲什麼我忽略了推出標題。 – DrKHunter 2012-02-16 22:25:50

+0

@DrKHunter - 無後顧之憂 - 樂於提供幫助。 – Fenton 2012-02-16 22:26:53

+0

header(「Cache-Control:private,max-age = 10800,pre-check = 10800」); header(「Pragma:private」); header(「Expires:」。date(DATE_RFC822,strtotime(「2 day」))); 是我最後用的 – DrKHunter 2012-02-16 22:27:16