上周,性能團(tuán)隊(duì)的貢獻(xiàn)者正在努力完善他們的多 mime/WebP 功能的后續(xù)補(bǔ)丁,此前該功能的主要工作在 7 月底被合并到 6.1 的核心中。這包括較小的相關(guān)項(xiàng)目,例如用于不支持瀏覽器的 shim 和添加 PDF 支持,這些項(xiàng)目在單獨(dú)的工單中處理。
為新的 JPEG 圖像上傳默認(rèn)生成 WebP 圖像的提議從一開(kāi)始就存在爭(zhēng)議。雖然 Google 贊助的推動(dòng)該項(xiàng)目的貢獻(xiàn)者在第一輪重要的批評(píng)反饋后進(jìn)行了一些修改,但其他貢獻(xiàn)者繼續(xù)表達(dá)他們表示沒(méi)有被考慮的擔(dān)憂。一些貢獻(xiàn)者報(bào)告了該功能的問(wèn)題,并建議它應(yīng)該從選擇加入開(kāi)始,這個(gè)想法在主要工作提交之前被立即駁回。

上周,WordPress 首席開(kāi)發(fā)人員 Andrew Ozz 提出了新的反對(duì)意見(jiàn):
像 @MatthiasReinholz、 @eatingrules和其他人一樣,我認(rèn)為這種方法可能缺乏。當(dāng)其中一半永遠(yuǎn)不會(huì)在任何地方使用時(shí),為什么會(huì)有兩倍多的圖像文件占用大量額外空間?
恕我直言,更好的方法是將所有圖像子尺寸都設(shè)為 WEBP。如果確實(shí)需要 JPEG,則可以根據(jù)需要即時(shí)生成。沒(méi)有必要用所有這些無(wú)用的文件來(lái)阻塞 Web 服務(wù)器的存儲(chǔ)。
另一方面,如果 WEBP 文件大小實(shí)際上比 JPEG 大,那可能意味著需要更好的工具,而這個(gè)補(bǔ)丁還為時(shí)過(guò)早。
六周前,谷歌贊助的核心提交者亞當(dāng)·西爾弗斯坦(Adam Silverstein)在回應(yīng)一項(xiàng)關(guān)于“轉(zhuǎn)換資源將是巨大的”的抱怨時(shí)證實(shí),用于生成上傳圖像的資源將“急劇增加”。
“但是,服務(wù)于圖像的資源將會(huì)減少,”西爾弗斯坦說(shuō)。“由于與圖像服務(wù)相比,圖像上傳非常罕見(jiàn),因此壓縮和存儲(chǔ)圖像的額外努力應(yīng)該是值得的。”
這是 Ozz 在反對(duì)這種方法時(shí)引用的另一個(gè)問(wèn)題。
“實(shí)際上,上傳圖片時(shí)資源使用量的急劇增加在這里是一個(gè)非常糟糕的副作用,”O(jiān)zz 說(shuō)。“這意味著很多上傳都會(huì)失敗,讓用戶(hù)陷入困境。它還將顯著增加對(duì) WordPress 和托管公司的支持請(qǐng)求。不要認(rèn)為這是可以接受的。正因?yàn)槿绱耍词?WordPress 需要圖像多 mime 支持,當(dāng)前的方法似乎也不是一個(gè)好的解決方案。”
大約 24 小時(shí)后,谷歌贊助的貢獻(xiàn)者 Felix Arntz評(píng)論說(shuō),舊瀏覽器的 WebP 回退機(jī)制到 JPEG 已準(zhǔn)備好提交,他計(jì)劃在幾天內(nèi)提交。
“請(qǐng)不要在這里提交更多代碼,除非它是為了解決上傳后創(chuàng)建圖像子尺寸所需的資源急劇增加,”O(jiān)zz 說(shuō)。“正如我上面所說(shuō),這種增加是不可接受的。
“上傳不同尺寸的圖像時(shí),是否有關(guān)于需要多少資源(內(nèi)存、處理時(shí)間等)的數(shù)據(jù)?估計(jì)有多少網(wǎng)站可能會(huì)受到影響?關(guān)于如何處理它的任何建議?你知道上傳圖片后處理失敗時(shí)會(huì)發(fā)生什么嗎?
“坦率地說(shuō),目前看來(lái),這個(gè)補(bǔ)丁必須被恢復(fù)和重構(gòu)才能解決這個(gè)問(wèn)題。”
亞當(dāng)·西爾弗斯坦 (Adam Silverstein) 回應(yīng)了他的擔(dān)憂,澄清了他們選擇當(dāng)前方法的原因,預(yù)期某些極端情況,并最終增加對(duì) AVIF 等格式的支持,一旦它得到更廣泛的支持:
我傾向于同意您的評(píng)估,即所有子尺寸都應(yīng)僅作為 WebP 生成,這就是原始提案的形式。對(duì)于絕大多數(shù)用例/用戶(hù)來(lái)說(shuō),這將是最好的。我愿意考慮將此作為默認(rèn)設(shè)置(有一些緩解措施,見(jiàn)下文)。
我們決定生成這兩種格式的原因是出于向后兼容性考慮,我們確定了 WebP 圖像可能無(wú)法工作的少數(shù)邊緣情況:即電子郵件圖像(一些較舊的 Outlook/Windows 客戶(hù)端)、Open Graph 標(biāo)簽(一些服務(wù)不支持WebP) 和較舊的 Safari 瀏覽器。我們考慮的一種可能性是只保留全尺寸的 JPEG,以便它始終可用于那些邊緣情況。
這里的“multi-mime”支持旨在生成多種格式,因此您的站點(diǎn)可以提供帶有
picture元素之類(lèi)的主要格式和備用格式。這對(duì)于 WebP 來(lái)說(shuō)不太重要,因?yàn)樗玫搅藦V泛的支持,但對(duì)于通過(guò)插件或核心采用 AVIF 等新格式很有幫助。
Silverstein 還表示,動(dòng)態(tài)生成圖像的選項(xiàng)是他們需要弄清楚的,但“感覺(jué)超出了這項(xiàng)工作的范圍”。
針對(duì)有關(guān)圖像上傳資源急劇增加的投訴,Silverstein 表示他們正在依靠“重試”機(jī)制來(lái)緩解這個(gè)問(wèn)題。
“這一變化也使 WordPress 重試圖像再生的次數(shù)增加了一倍,因此雖然處理時(shí)間會(huì)增加,但我認(rèn)為我們不一定會(huì)看到失敗的激增,”他說(shuō)。“我知道過(guò)去我們?cè)谔砑有鲁叽鐣r(shí)遇到了麻煩,但那是在我們添加重試機(jī)制之前。”
默認(rèn)情況下,WebP 項(xiàng)目背后的團(tuán)隊(duì)更專(zhuān)注于在前端提供較小的圖像尺寸,并認(rèn)為上傳時(shí)額外的資源使用是 WordPress 用戶(hù)的必要犧牲。
“上傳時(shí)的額外資源需要與服務(wù)較小 WebP 圖像的資源減少進(jìn)行權(quán)衡,特別是因?yàn)榉?wù)通常比上傳更頻繁地發(fā)生幾個(gè)數(shù)量級(jí),”Silverstein 說(shuō)。
“如果在所有重試后上傳失敗,用戶(hù)將獲得與當(dāng)前相同的體驗(yàn):他們留下的圖像損壞、無(wú)法使用。這可能是可以解決的,盡管我認(rèn)為這種變化不會(huì)增加失敗率。”
WordPress 首席開(kāi)發(fā)人員 Dion Hulse 還評(píng)論了在 WordPress 照片目錄中報(bào)告 WebP 轉(zhuǎn)換問(wèn)題的票:
請(qǐng)注意,這些額外的 webp 轉(zhuǎn)換似乎是最近幾周 WordPress 照片目錄上傳失敗的主要原因。請(qǐng)參閱 #meta6142 并且票證作為其副本關(guān)閉。
Allowed memory size of 256M bytes exhausted (tried to allocate 90M bytes在嘗試執(zhí)行初始全尺寸原始 jpeg -> webp 轉(zhuǎn)換時(shí),錯(cuò)誤通常與 (顯然與字節(jié)值有關(guān))。它并沒(méi)有影響 每次上傳,只影響某些圖像。可能與
$quality為 webp 請(qǐng)求傳遞的值有關(guān)(IIRC 的默認(rèn)值 82 已針對(duì) jpeg 進(jìn)行了優(yōu)化?)。
由于這些錯(cuò)誤, Hulse禁用了 JPEG 到 WebP 的轉(zhuǎn)換,因?yàn)檎掌夸洰?dāng)前不使用 WebP,但指出這“可能表明可能值得考慮只為調(diào)整大小的圖像生成 webp,而不是為原文件也是。”
Silverstein 說(shuō)他們正在調(diào)查 Hulse 報(bào)告的問(wèn)題,因?yàn)樗赡鼙┞读艘粋€(gè)錯(cuò)誤。
Ozz 轉(zhuǎn)而建議按需制作子尺寸將是一種更好的方法,它可以更快地處理上傳的圖像并減少空間需求,因?yàn)槌切枰駝t不會(huì)生成額外的 JPEG 圖像。他還指出,圖像后處理的“重試”“效果不如預(yù)期”。
“壞消息是,如果后處理失敗,最初上傳的文件很可能會(huì)保留,”O(jiān)zz 說(shuō)。“然后它將在任何地方使用,因?yàn)?WP 中的大多數(shù)代碼都回退到可用大小,并且唯一的大小將是原始大小。這意味著我們將提供巨大的(平均 4MB – 8MB)圖像。一個(gè)嚴(yán)重的缺點(diǎn)。”
Silverstein 回應(yīng)了 Ozz 的建議,同意許多人的意見(jiàn),并為該項(xiàng)目提出了兩條潛在的前進(jìn)道路:
- 保留當(dāng)前的多 mime 基礎(chǔ)結(jié)構(gòu),但更改默認(rèn)值以便僅生成 WebP 文件,可能達(dá)到閾值大小,超過(guò)該閾值大小將僅生成 JPEG。大多數(shù)現(xiàn)有工作將繼續(xù)進(jìn)行;內(nèi)容過(guò)濾可能會(huì)被刪除。
- 恢復(fù)多 mime 基礎(chǔ)架構(gòu)并切換回單一 mime 方法,對(duì)達(dá)到閾值大小的圖像使用 WebP,并調(diào)整兼容層以使用我們保留的 JPEG。
性能團(tuán)隊(duì)正在做更多的研究,并暫時(shí)停止提交任何其他事情,直到他們收到有關(guān)項(xiàng)目下一個(gè)方向的反饋。
注:文本內(nèi)容來(lái)自 WordPress Tavern,由 WordPress大學(xué) 翻譯整理。
對(duì)于“WordPress 默認(rèn)采用 WebP” 的話題,您有什么想法,歡迎在下面評(píng)論分享哦。





感謝分享