2012-06-08 18 views
12

在Ruby on Rails的引導到資產管道,它說爲什麼我應該使用資產管道來提供圖片?

下公衆的任何資產將擔任由 應用程序或Web服務器靜態文件。您應該使用應用程序/資產來處理 在提供服務之前必須進行一些預處理的文件。

http://guides.rubyonrails.org/asset_pipeline.html

對我來說,這是說的圖像應保存在公共目錄,因爲他們可以通過我的Web服務器靜態地提供,不需要預處理。

將您的圖片放入assets/有什麼好處?

+0

@ gmoore-自己也想知道同樣的事情。我正在考慮的另一件事 - MD5-哈希文件名會使圖像文件的名稱有些模糊,這可能會讓您的圖像被Google編入索引而受到傷害? – Yarin

回答

9

資產預編譯將獨特的哈希值附加到圖像文件名,它允許用戶獲取它的最新版本,儘管服務器上存在緩存或過期設置。當您想要更改網站設計中的圖像時,這非常有用。

你不想爲圖像使用/assets/images什麼不太可能改變(如用戶上傳)。

+0

確實,你不希望爲用戶上傳使用'/ assets/images'。然而,即使您不希望它們發生變化(例如,徽標),仍然可以將其用於所有自己的圖像。使用不同的文件夾只會使您的設置過於複雜,沒有任何優勢。 – jokklan

4

因爲這會損害資產管道的多功能性。

在通過資產管道提供圖像的情況下,如果更改資產管道(例如,將文件上傳到S3),則必須通過其他任務同步圖像。

可能還有其他更深層次的原因,但那是什麼讓我停下來的。

編輯: 附註:在生產中要歸功於資產:預編譯來自/ assets /的所有內容將由公共服務器提供。

+0

關於公開提供的預編譯資產的好處。 – gmoore

+0

@DanielEvans - 你能解釋一下「改變資產管道」的含義嗎?我不明白你給S3上傳的例子。 – Yarin

+1

@Yarin當然:通常的做法是將應用程序的靜態資產從公共以外的地方提供。例如,您的部署過程可能會將資產推送到CDN或Amazon S3。您可以增強資產管道,以便使用rake資產:預編譯將資產放到您想要的地方。但是,如果您的資產已公開存儲,您可能需要手動調整現有的適用於您的寶石/腳本。 –

相關問題