programmatūra · 6 min · 20.08.2026

WordPress 7.1 bilžu apstrādi pārceļ pārlūkā: 13 MB WebAssembly, par 15 % mazāki JPEG

WordPress 19. augustā izdeva versiju 7.1 ar nosaukumu “Mary Lou”. Attēlu samazināšana tajā vairs nenotiek uz servera. Kad lietotājs Chrome vai Edge pārlūkā augšupielādē bildi, izmērus, formāta pārveidi, EXIF pagriešanu un sīktēlus izrēķina pati pārlūkprogramma ar WebAssembly kompilētu libvips bibliotēku. PHP puse saņem jau gatavus failus.

Kodola komanda raksta, ka šādi iegūtie JPEG faili ir apmēram par 15 % mazāki nekā tie, ko dod GD vai Imagick, jo klienta pusē strādā MozJPEG stila kodētājs. Cena par to ir 13 MB liels WASM saišķis, kas jāielādē redaktora ekrānā.

Ieguvums ir redzamākais uz lētiem koplietošanas serveriem. Līdz šim viena 12 megapikseļu bilde augšupielādes laikā lika PHP procesam ģenerēt visus reģistrētos izmērus, kas uz noslogota servera bieži beidzās ar taimautu vai atmiņas limita kļūdu. Tagad šo darbu izdara lietotāja dators. Serveris saņem gatavus failus. Apmaiņā katrs redaktora atvērums lejupielādē WASM kodu.

vips.wasm, vips-heif.wasm un mediabunny

Apstrādi veic wasm-vips, libvips WebAssembly būvējums. Ielādējas divi WASM faili: vips.wasm pamata darbībām un vips-heif.wasm, bez kura nevar atkodēt AVIF. Klienta pusē apstrādājamo MIME tipu saraksts ir iesaldēts konstantē CLIENT_SIDE_SUPPORTED_MIME_TYPES. Filtra, ar ko to papildināt, nav. Sarakstā ir JPEG, PNG, GIF, WebP un AVIF.

iPhone HEIC bildes pārlūks atkodē un pārveido par JPEG vēl pirms sūtīšanas. Oriģinālu WordPress patur blakus kā atsevišķu failu. Animētos GIF failus tagad pārtaisa par video. To dara mediabunny bibliotēka atsevišķā Web Worker procesā. Vienlaikus notiekošo darbību skaits ir ierobežots: līdz piecām augšupielādēm, līdz divām attēlu apstrādēm un tikai viena video pārveide.

Firefox un Safari paliek pie servera

Funkcijai vajag SharedArrayBuffer, tāpēc bloku redaktora ekrānos WordPress sūta galveni Document-Isolation-Policy: isolate-and-credentialless. Firefox un Safari šo galveni neatbalsta, tāpēc tajos apstrāde klusi notiek uz servera tāpat kā līdz šim. Chrome un Edge vajag vismaz 137. versiju, Chrome uz Android vismaz 146. versiju.

Pārbaudes ar to nebeidzas. Pārlūks apstrādi sāk tikai tad, ja ierīcei ir vairāk par 2 GB atmiņas, vismaz divi procesora kodoli un savienojums ātrāks par 2G. Ja lapas satura drošības politika neatļauj worker-src 'self' blob:, blob worker izveide neizdodas un WordPress atkāpjas uz servera pusi. Kodola izstrādes ieraksts min arī to, ka ārējie skripti automātiski saņem atribūtu crossorigin="anonymous": servera pusē to pieliek buferizēta izvade, klienta pusē MutationObserver.

Ko darīt spraudņu autoriem

Visu funkciju izslēdz ar filtru wp_client_side_media_processing_enabled. Pašreizējo stāvokli pārbauda ar jauno funkciju wp_is_client_side_media_processing_enabled(). Vecie filtri turpina strādāt arī pārlūkā: big_image_size_threshold, image_editor_output_format, image_save_progressive, wp_image_maybe_exif_rotate, wp_editor_set_quality un jpeg_quality.

Viena izmaiņa var salauzt esošo kodu bez brīdinājuma. Āķis wp_generate_attachment_metadata tagad nostrādā divreiz: vienreiz ar kontekstu create augšupielādes sākumā un otrreiz ar update pēc tam, kad nostrādājis finalize galapunkts. Kods, kas šajā āķī sūta paziņojumus vai raksta ārējā sistēmā, to izdarīs divas reizes. REST saskarne ieguvusi parametrus generate_sub_sizes un convert_format, kā arī divus jaunus galapunktus: POST /wp/v2/media/{id}/sideload un POST /wp/v2/media/{id}/finalize. Atbildē tagad ir arī lauki exif_orientation, missing_image_sizes, filename un filesize.

Iframe redaktors un citas lūzuma vietas

Ierakstu redaktors tagad vienmēr strādā iframe iekšienē neatkarīgi no tēmas veida. Agrāk uzvedību varēja mainīt katram ierakstam atsevišķi. Laidiena ceļvedis šo sauc par galveno saderības risku:

Uzspiestais iframe redaktors rada iespējamas saderības problēmas spraudņiem, kuri paļaujas uz JavaScript un CSS piekļuvi pāri dokumentu robežai.

Ierakstu saraksta tabulā th scope="row" pārcēlies no rūtiņas kolonnas uz virsraksta kolonnu. Rūtiņas šūna tagad ir td, virsraksta šūna ir th ar aria-label. Navigācijas bloks vairs neuzspiež fonta izmēra iestatījumu bērnu blokiem, tāpēc no to marķējuma pazūd has-{slug}-font-size klases.

Atsaucīgais noformējums theme.json failā lieto atslēgas @mobile un @tablet ar noklusējuma robežām 480px un 782px. Atslēgas @desktop nav, jo pamatvērtības darbojas visos platumos. Savas robežas uzstāda ar iestatījumu settings.viewport. Pseidostāvokļi :hover, :focus, :focus-visible un :active pagaidām strādā tikai pogas un navigācijas saites blokos.

Kas vēl ir kastē

Ikonu reģistrēšanai parādījusies publiska SVG saskarne ar funkcijām wp_register_icon_collection(), wp_register_icon() un wp_get_icon(). Sanitizācija tajā atļauj tikai svg, path un polygon tagus, tāpēc sarežģītākas ikonas caur to neizlaist. Abilities API ieguvusi filtrēšanu pēc kategorijas, nosaukumtelpas un metadatiem funkcijā wp_get_abilities(), izpildes cikla āķus un JSON Schema sagatavošanu ārējiem klientiem, tostarp AI rīkiem.

Ikonu apzīmējumiem bez teksta ir divas jaunas funkcijas wp_get_tooltip() un wp_get_toggletip(). CSS tām ielādējas visur, JavaScript nāk ar rokturi wp-tooltip. React paliek 18.3 versijā, jo pāreju uz 19 atlika uz vēlāku laidienu. jQuery UI atjaunināta līdz 1.14.2.

Laidiens sakrita ar WordCamp US noslēgumu Fīniksā. Pirms tā 7.0 zarā iznāca divi drošības atjauninājumi: 7.0.2 jūlija 17. datumā ar vienu kritisku un vienu augstas bīstamības labojumu, bet 7.0.3 augusta 6. datumā ar vēl 12 labojumiem.

Laidiena paziņojums min vairāk par 800 līdzautoriem, no kuriem 170 piedalījās pirmo reizi. Ceļvedis skaita 310 Trac biļetes, 180 kodola kļūdu labojumus un 20 jaunus āķus, no tiem 19 filtri un viena darbība. Kopā mainīti 1480 faili: 88 163 pievienotas rindas un 18 601 izņemta.

Avoti

komentārisaruna

Komentāri

Šim rakstam vēl nav komentāru. Esi pirmais, kurš dalās ar savu viedokli.

Pievieno komentāru

Tavs e-pasts netiks publicēts. Obligātie lauki atzīmēti.

vēl no programmatūrasaistītie