2012-08-29 54 views
1

我正在運行一個Magento的實例,我試圖爲不會經常更改的內容設置緩存規則。我將所需的規則添加到位於Magento根文件夾中的.htaccess文件(規則在帖子的底部),但它們似乎被忽略。當我檢查HTTP標頭,這是我所看到的:Magento和Apache - 緩存設置似乎被忽略

Pragma: no-cache, no-cache 
Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0, private, no-cache, no-store, proxy-revalidate, no-transform 

很顯然,我在這裏做得不對。有什麼我應該檢查看誰是強制執行「禁止緩存」策略,以及在哪裏?在此先感謝您的答案。

規則添加到.htaccess文件

# Turn on Expires and set default to 0 
ExpiresActive On 
ExpiresDefault A0 

# Set up caching on media files for 1 year (forever?) 
<FilesMatch "\.(flv|ico|pdf|avi|mov|ppt|doc|mp3|wmv|wav)$"> 
    ExpiresDefault A29030400 
    Header append Cache-Control "public" 
</FilesMatch> 

# Set up caching on media files for 2 weeks 
<FilesMatch "\.(gif|jpg|jpeg|png|swf)$"> 
    ExpiresDefault A1209600 
    Header append Cache-Control "public" 
</FilesMatch> 

# Set up 1 week caching on commonly updated files 
<FilesMatch "\.(xml|txt|html|js|css)$"> 
    ExpiresDefault A604800 
    Header append Cache-Control "proxy-revalidate" 
</FilesMatch> 

# Force no caching for dynamic files 
<FilesMatch "\.(php|cgi|pl|htm)$"> 
    ExpiresActive Off 
    Header set Cache-Control "private, no-cache, no-store, proxy-revalidate, no-transform" 
    Header set Pragma "no-cache" 
</FilesMatch> 

回答

2

你也知道存在/媒體htaccess的? (Faceplant ...)

如果你這樣做,那麼你可能會考慮把'靜態'內容放在一個單獨的子域,一個是免費的cookie。

在Magento的後臺去系統 - > config->通用>網絡,然後輸入http://static.yourdomain.com/

現在你可以移動的.htaccess指令到原來的httpd.conf文件(這是名義上更快)和刪除/停放.htaccess文件。

現在將cookie域(在'會話Cookie管理'中)設置爲www.yourdomain.com - 現在static.yourdomain.com上不會有任何cookie,因此Web服務器應該更快捷。如果這些圖像沒有通過,那麼您可能需要在您的DNS'A'記錄上設置通配符,以便任何非www地址都通過同一個方框。

現在,您可以微調在/媒體.htaccess文件,並把這些指令在static.yourdomain.com.conf

+0

我不知道在媒體中的.htaccess,我得檢查。其他建議也很好,但我已經意識到它們,現在我不能應用它們,因爲這是臨時託管,並且我無法訪問httpd.conf。這就是爲什麼我試圖儘可能地通過.htaccess來改善情況。 – Diego

+0

我在/ media的htaccess框中是否有勾號? – Theodores