2011-11-24 172 views
3

嗨,大家好我已經在生產模式下運行我的智能應用在軌道3.1與mongodb。在軌道上的紅寶石3.1槓桿瀏覽器緩存

我可以看到螢火蟲該網頁的速度有一個聰明的問題:

的靜態槓桿瀏覽器緩存,可以將上面的圖片中看到:

enter image description here

我檢查這個修復,但不是爲我工作:

ROR + MVC Disable Browser Cache

我想知道我怎麼能解決這個PR爲我的圖像,CSS和JavaScript,或者如果有這個寶石。

+0

你可以提出一個更清晰的問題嗎?我無法真正看到您提供的圖像或很好地理解問題。 –

回答

6

謝謝你的迴應Hightechrider和miaout17。

使用Apache的Im。我添加到apache2.conf下一個代碼:

<LocationMatch "^/assets/.*$"> 
# Some browsers still send conditional-GET requests if there's a 
# Last-Modified header or an ETag header even if they haven't 
# reached the expiry date sent in the Expires header. 
Header unset Last-Modified 
Header unset ETag 
FileETag None 
# RFC says only cache for 1 year 
ExpiresActive On 
ExpiresDefault "access plus 1 year" 
</LocationMatch> 

武衛我得到一個錯誤,當我嘗試重置我的服務器阿帕奇:

語法錯誤的/etc/apache2/apache2.conf中的256線: 命令'ExpiresActive'無效,可能是拼寫錯誤或未包含在服務器配置中的模塊定義的 「重新啓動」操作失敗。 Apache錯誤日誌可能包含更多信息。

有些想法嗎?

編輯我發現這個錯誤的修復:

如果你有一個Ubuntu的用戶可以使用a2enmod走捷徑,即自動啓用該模塊爲你的命令:

sudo a2enmod headers 

然後重新啓動你的服務器,瞧:D工作正常。

+5

如果您添加了mod頭並仍然收到以下錯誤消息:'Invalid command'ExpiresActive',may be spepelled or defined by a module not included in server configuration',running this command:'a2enmod expires' – boblin

2

根據Asset Pipeline Guides,您需要在您的Web服務器配置文件中設置到期。本指南中提供了Apache和Nginx的配置示例,請閱讀第4.1.1節「服務器配置」並嘗試使用。

ROR + MVC Disable Browser Cache不起作用,因爲您使用Web服務器託管靜態文件,所以請求不會通過控制器。

我想我以前的回答是錯誤的,因爲過期未指定可能意味着瀏覽器不會緩存任何東西,並導致非常差的性能。


上一頁(錯)答案:

事實上,也不會造成任何問題。 如果文件需要過期,您需要設置過期時間。但是,在Rails 3.1中,資產管道會自動將MD5添加到文件名中。如果文件被更改,URL也將被更改。因此,不設置到期時間是安全的。
+0

然後這個警報出現在谷歌網頁的速度不會影響網站搜索引擎優化的性能?謝謝 – hyperrjas

+0

更新:對不起,經過一番調查,我認爲這個答案是錯誤的。我會寫另一個答案。 – miaout17

+0

那麼這個問題的解決方法是什麼?在軌道3.1? – hyperrjas