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

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定
已解決430363個(gè)問題,去搜搜看,總會(huì)有你想問的

在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更多。我相信第一次請(qǐng)求資產(chǎn)時(shí),就會(huì)對(duì)其進(jìn)行編譯。這將是第一次對(duì)性能的影響(這意味著您通常需要在生產(chǎn)中使用js運(yùn)行時(shí)才能做到這一點(diǎn))。但除了這些缺點(diǎn)之外,在資產(chǎn)被懶散地匯編之后,我想所有對(duì)該資產(chǎn)的后續(xù)訪問都將具有不性能命中,該應(yīng)用程序的性能將是完全一樣與預(yù)編譯資產(chǎn)一樣,在這個(gè)初始的第一次延遲編譯之后。這是真的嗎?我遺漏了什么嗎?任何其他不應(yīng)設(shè)置的理由config.assets.compile = true在生產(chǎn)中?如果我在生產(chǎn)中有一個(gè)JS運(yùn)行時(shí),并且愿意為第一訪問資產(chǎn),以換取不必運(yùn)行precompile這有道理嗎?
查看完整描述

3 回答

?
智慧大石

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

指南是我寫的。

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

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

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

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

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

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

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

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

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

這使得具有正確指紋資產(chǎn)的頁(yè)面生成非???,而文件本身的服務(wù)則是從文件系統(tǒng)中快速生成Web服務(wù)器。兩者都比實(shí)時(shí)編譯快得多。

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

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

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

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

對(duì)決

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

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

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

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

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

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

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


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

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

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

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

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


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

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

任何使用Heroku的人:

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

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


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

添加回答

舉報(bào)

0/150
提交
取消
微信客服

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

幫助反饋 APP下載

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

公眾號(hào)

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