2016-05-17 63 views
1

我遇到了一個非常奇怪的錯誤。使用mogrify調整大小後的資產中找不到圖像

我的網站工作完美,但我不得不調整着陸頁上的一些圖片的大小,因爲太重了,他們放慢了我的頁面。

我使用mogrify來調整在app /資產/圖像的所有圖像

mogrify -resize 50% *.jpg 

調整之後,我刪除了所有資產使用

rake assets:clean 

然後

rake assets:precompile 

重新編譯圖片在資產管道中,儘管我清除了瀏覽器的緩存,但現在不再顯示圖像。如果我改變圖像的名稱,並在我看來相應的,一切正常。

更新:

的問題是,當我調整圖像大小,編譯後的文件名稱更改。這是我的錯誤,當我嘗試訪問圖像:

No route matches [GET] "/assets/image-small-05a31635ef97c8b04eaeb6e5f3f9053f1146ed1cae0796aed876f086f934cf0b.jpg" 

但在資源路徑,相同的文件有名稱:

image-small-a8859704b69e18b59af2760e724b27560d1d40a597595308241845f563197a27.jpg 

因此,在文件系統中的隨機部分變化,但沒在網頁上不會改變。

感謝您的幫助

+0

我的第一個猜測是緩存問題。您是否嘗試在跳過緩存的情況下重新加載網頁? mogrify會改變文件的修改時間嗎?我想應該。否則使用'touch'來做到這一點。通過他們的資產路徑訪問原始圖像嗎? (即將src直接粘貼到瀏覽器的地址欄中,看看會發生什麼) – Raffael

+0

我忘了說我總是清除緩存。 Mogrify更改文件的更新時間,所以這不是問題。問題是調整大小後,編譯的圖像文件名會發生變化,而網頁中的引用是舊的。我會更新回答以澄清問題 –

+0

您清楚哪個緩存?確保你清除Rails.cache和瀏覽器緩存。沒有其他想法,對不起。 – Raffael

回答

1

我假設你使用的是正確的資源路徑傭工等,因爲你的資產成功地露面之前mogrification。

請確保沒有緩存引用過期版本的資產。

  • 刪除網絡瀏覽器的緩存(力重載不相同)
  • 刪除已預編譯與rake assets:clean
  • 資產刪除服務器上的所有元數據與rake tmp:clear
  • 在Rails.cache刪除條目(例如memcache)與rake cache:clear

如果您使用的是Zeus,請停止(並重新啓動)任何Ruby預加載器。

最後,重新啓動您的Rails應用程序服務器。

這應該會使您的資產重新聯機。