4

因爲我在應用程序中使用的jQuery插件具有對圖像的直接引用,所以我試圖關閉資產指紋識別。Rails 3.1 Asset Pipeline - 關閉Heroku上的圖像資產指紋識別?

所以我在我的production.rb中設置了config.assets.digest = false,但現在我的圖像引用都沒有任何工作。 /assets/foo.png只是返回空白響應。

我真的不想改變jQuery插件的代碼並添加erb圖像助手,但我不知道還有什麼其他的辦法。坦率地說,圖像資產指紋識別似乎比它的價值更麻煩。

有沒有人有任何見解?

謝謝!

+0

您是否重新預編譯了您的資產? '耙資產:預編譯'? – cailinanne

回答

1

如果您使用的是大型插件,如ckeditor,那麼您唯一真正的選擇是將該插件移動到公共目錄中。

對於較小的插件,您可以將其圖像移動到正確的資產路徑。例如,如果您的插件在插件文件夾下引用images/icon.jpg,則需要將其移至app/assets/images/plugin_name/icon.png之類的內容,然後在<%= asset_tag('plugin_name/icon.png') %>的插件中引用該插件。

管道是值得的。在生產中不使用摘要幾乎否定了使用它的要點,即設置遠遠未用的標頭,以便將資源緩存到某處。

如果您設置了刪除摘要,那麼您必須預編譯資產(以便Sprockets不會爲遠期標題提供服務),並確保服務器上未設置標題。

+0

我只是將插件的圖像移動到公用目錄中它們自己的文件夾中。這樣,我可以將所有其他資產的摘要留下。我認爲資產管道對CSS和Javascript非常有用,但我仍然不相信它對圖像的有用性。 –

+1

圖像的有用性 - 尤其是CSS中的或者經常被訪問的圖像 - 的用處是它們被指紋識別,因此可以設置遠期標題。如果您使用每個頁面上的公司徽標或CSS背景的精靈來做到這一點,這些將被緩存。經常訪問者可能會在本地或邊界緩存訪問該映像,從而節省下載量並加快瀏覽體驗。 –

3

有人做了一個寶石用於此目的:

https://github.com/spohlenz/digestion

資產管道的Rails 3.1的一個新的偉大的組成部分。然而,它具有一個稱爲指紋的功能,因此它不可能將許多流行的JavaScript庫(包括 TinyMCE,CKEditor和FancyZoom僅舉幾例)合併到資產管道 中。

此Gem通過禁用指紋功能爲特定文件 或路徑禁用資產管道以允許使用這些庫 。

+0

哦,這是一個好主意。我稍後會研究這一點。謝謝! –

+0

該寶石的功能已被合併到Rails中。 –

+0

@Richard Hulse:你能詳細說明一下嗎? –