簡體   English   中英

Rails應用程序-使用Cloudfront通過Heroku進行資產交付

[英]Rails Application - Using Cloudfront for asset delivery with Heroku

情況

我無法在沒有指定每個文件在config / initializers / assets中進行預編譯的情況下,在heroku中預編譯我的供應商資產,因此只能使用set

config.assets.compile = true

注意:我不需要application.js中的供應商資產,因為在需要它們的時候,我會逐頁調用它們。

無論如何,我設置了一個Cloudfront帳戶,現在一切都在進行中,就像在開發中一樣。 但是在部署到Heroku時,會出現警告和指向StackOverflow帖子的鏈接,警告不要將config.assets.compile設置為true。

在生產環境中將Compile設置為True如果在生產環境中啟用了將應用程序設置為config.assets.compile = true,則應用程序可能會非常慢。 最好在堆棧溢出文章中對此進行描述:

當您進行編譯時,將發生以下情況:/ assets中對文件的每個請求都傳遞給Sprockets。 在對每個資產的第一個請求時,它將被編譯並緩存在Rails用於緩存的文件中(通常是文件系統)。 在隨后的請求中,Sprockets接收到該請求並必須查找指紋文件名,檢查構成資產的文件(圖像)或文件(css和js)是否未被修改,然后如果有緩存版本,則為該文件提供服務。

還已知此設置會導致其他運行時不穩定,通常不建議這樣做。 相反,我們建議您在部署時預編譯所有資產(這是默認設置),或者如果不可能在本地編譯資產。

我的問題是,由於我現在正在使用Cloudfront,這是否可以避免他們警告我的問題,運行緩慢等問題?

在此先感謝您的任何建議:)

是的,您可能會被覆蓋。 資產要求將首先到達CloudFront。 在第一個請求之后,它將被緩存並且不應在您的服務器上進行編譯。 但是,每次資產更改時,它們都必須重新編譯,這當然非常慢。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM