第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機(jī)立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

在Rails生產(chǎn)中,config.assets.install=true,為什么不呢?

在Rails生產(chǎn)中,config.assets.install=true,為什么不呢?

在Rails生產(chǎn)中,config.assets.install=true,為什么不呢?安裝的默認(rèn)Rails應(yīng)用程序rails new有config.assets.compile = false在生產(chǎn)中。做事情的最普通的方法就是跑rake assets:precompile在部署應(yīng)用程序之前,要確保編譯了所有資產(chǎn)管道資產(chǎn)。如果我設(shè)置config.assets.compile = true在生產(chǎn)中?我不需要跑precompile更多。我相信第一次請求資產(chǎn)時,就會對其進(jìn)行編譯。這將是第一次對性能的影響(這意味著您通常需要在生產(chǎn)中使用js運行時才能做到這一點)。但除了這些缺點之外,在資產(chǎn)被懶散地匯編之后,我想所有對該資產(chǎn)的后續(xù)訪問都將具有不性能命中,該應(yīng)用程序的性能將是完全一樣與預(yù)編譯資產(chǎn)一樣,在這個初始的第一次延遲編譯之后。這是真的嗎?我遺漏了什么嗎?任何其他不應(yīng)設(shè)置的理由config.assets.compile = true在生產(chǎn)中?如果我在生產(chǎn)中有一個JS運行時,并且愿意為第一訪問資產(chǎn),以換取不必運行precompile這有道理嗎?
查看完整描述

3 回答

?
智慧大石

TA貢獻(xiàn)1946條經(jīng)驗 獲得超3個贊

指南是我寫的。

您肯定不想活在生產(chǎn)中編譯。

當(dāng)您進(jìn)行編譯時,會發(fā)生這樣的情況:

對/Asset中的文件的每個請求都傳遞給鏈輪。在第一在Rails用于緩存(通常是文件系統(tǒng))的任何資源中編譯和緩存每個資產(chǎn)的請求。

在隨后的請求中,鏈輪接收到請求,并必須查找指紋文件名,檢查構(gòu)成資產(chǎn)的文件(圖像)或文件(CSS和js)沒有被修改,如果存在緩存版本,則提供該文件。

那是一切在“資產(chǎn)”文件夾中在插件使用的任何供應(yīng)商/資產(chǎn)文件夾中。

這是很大的開銷,因為,老實說,代碼并不是為了速度而優(yōu)化的。

這將對資產(chǎn)傳輸?shù)娇蛻舳说乃俣犬a(chǎn)生影響,并會對站點的頁面加載時間產(chǎn)生負(fù)面影響。

與默認(rèn)情況相比:

當(dāng)資產(chǎn)預(yù)編譯和編譯關(guān)閉時,將對資產(chǎn)進(jìn)行編譯,并將其指紋到public/assets..鏈輪將普通文件名到指紋文件名的映射表返回給Rails,Rails將其寫入文件系統(tǒng)。清單文件(Rails 3中的yml或Rails 4中具有隨機(jī)名稱的JSON)在啟動時由Rails加載到內(nèi)存中,并被緩存以供資產(chǎn)助手方法使用。

這使得具有正確指紋資產(chǎn)的頁面生成非??欤募旧淼姆?wù)則是從文件系統(tǒng)中快速生成Web服務(wù)器。兩者都比實時編譯快得多。

要獲得管道和指紋的最大優(yōu)勢,您需要在Web服務(wù)器上設(shè)置未來的頭文件,并為js和css文件啟用gzip壓縮。鏈輪編寫gzip版本的資產(chǎn),您可以設(shè)置您的服務(wù)器使用,消除了它這樣做的需要,為每個請求。

這將盡可能快地將資產(chǎn)分發(fā)給客戶端,并且在盡可能小的大小下,加快頁面的客戶端顯示速度,并減少(具有遙遠(yuǎn)未來的頭)請求。

因此,如果您正在進(jìn)行實時編譯,則如下所示:

  1. 很慢
  2. 缺乏壓縮
  3. 將影響頁的呈現(xiàn)時間。

對決

  1. 越快越好
  2. 壓縮
  3. 刪除從服務(wù)器無意中聽到的壓縮(可選)。
  4. 盡量減少頁面的呈現(xiàn)時間。

編輯:(回復(fù)后續(xù)評論)

管道更改為在第一個請求時預(yù)編譯,但這樣做有一些主要障礙。首先,必須有一個查表來查找指紋名稱,否則助手方法太慢。在按需編譯的情況下,在編譯或請求每個新資產(chǎn)時,需要有一些方式來附加到查找表。

此外,在所有資產(chǎn)匯編到位之前,有些人將不得不在一段未知的時期內(nèi)支付緩慢交付資產(chǎn)的代價。

默認(rèn)情況下,編譯所有內(nèi)容的代價是一次性支付的,它不會影響公眾訪問者,并確保一切在事情開始運行之前都能正常工作。

打破這一協(xié)議的原因是,它給生產(chǎn)系統(tǒng)增加了許多復(fù)雜性。

如果您正在閱讀這篇文章,因為您正在為部署過程中的緩慢編譯時間尋找解決方案,那么您可以考慮在本地預(yù)編譯這些資產(chǎn)。有關(guān)這方面的信息,請參閱資產(chǎn)管道指南..這允許您只在發(fā)生更改時在本地預(yù)編譯,提交該更改,然后在沒有預(yù)編譯階段的情況下進(jìn)行快速部署。


查看完整回答
反對 回復(fù) 2019-07-02
?
慕碼人8056858

TA貢獻(xiàn)1803條經(jīng)驗 獲得超6個贊

減少預(yù)編譯的開銷。

Precompile everything initially with these settings in production.rb# Precompile *all* assets, except those that start with underscoreconfig.
assets.precompile << /(^[^_\/]|\/[^_])[^\/]*$/

然后,您可以簡單地將圖像和樣式表作為*.html.erb或“/Asset/web.png”中的“/Asset/樣式表.css”使用。


查看完整回答
反對 回復(fù) 2019-07-02
?
HUWWW

TA貢獻(xiàn)1874條經(jīng)驗 獲得超12個贊

任何使用Heroku的人:

如果部署到赫庫,如果未包含已編譯的資產(chǎn),它將在部署期間自動為您進(jìn)行預(yù)編譯。public/assets(沒有承諾)所以不需要config.assets.compile = true,或者提交預(yù)編譯資產(chǎn)。

Heroku的文檔是這里..一個CDN建議刪除dyno資源上的負(fù)載。


查看完整回答
反對 回復(fù) 2019-07-02
  • 3 回答
  • 0 關(guān)注
  • 678 瀏覽

添加回答

舉報

0/150
提交
取消
微信客服

購課補(bǔ)貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習(xí)伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號