Gutenberg: Blok galeri lambat

Dibuat pada 15 Des 2017  ·  3Komentar  ·  Sumber: WordPress/gutenberg

Ikhtisar Masalah

Blok Galeri seperti yang saat ini diterapkan memiliki masalah kinerja dan penskalaan karena jumlah permintaan yang dihasilkannya. Saya tidak terbiasa dengan praktik terbaik di React, tetapi saya akan mencoba menjelaskan apa yang saya lihat saat bekerja dengan galeri.

Langkah-langkah untuk Mereproduksi (untuk bug)

  1. Masukkan blok Galeri baru

  2. Klik tombol "Sisipkan dari Perpustakaan Media" untuk membuka modal media

    Ini adalah perilaku standar, tetapi hanya untuk menjelaskan apa yang terjadi: Ketika modal media dibuka untuk pertama kalinya, ia mengirimkan permintaan AJAX query-attachments untuk mengambil 40 lampiran terbaru dan menambahkannya ke koleksi global yang dapat diakses di wp.media.model.Attachments.all .Menggulir perpustakaan akan malas memuat 40 lampiran sekaligus.

  3. Pilih 10 gambar dan klik tombol "Buat Galeri Baru"

  4. Klik tombol "Sisipkan Galeri"

    __Saat memasukkan galeri, blok Galeri menjalankan permintaan terpisah ke REST API untuk setiap gambar di galeri. Dalam hal ini, itulah 10 permintaan yang harus ditanggapi sebelum galeri dapat dipratinjau.

    Selain membanting server dengan permintaan, ini juga menciptakan penundaan rendering yang tidak optimal.__

  5. Klik tombol edit di bilah alat untuk memperbarui galeri

    __Blok mengirimkan permintaan AJAX get-attachment untuk setiap gambar di galeri. Ini terjadi setiap kali bingkai media dibuka.__

  6. Tutup bingkai media

  7. Simpan postingan

  8. Menyegarkan

    __Saat editor dimuat, gambar diambil satu per satu dari REST API.__

Perilaku yang Diharapkan


Saya berharap galeri merender lebih cepat. Di mesin lokal saya, galeri dengan 10 gambar dapat dirender dari 4-10 detik.

Kemungkinan Solusi


Idealnya, jika sebuah postingan memiliki galeri, data gambar akan dimuat sebelumnya untuk mencegah permintaan tambahan apa pun selama pemuatan awal.

Saat membuka bingkai media, PR #2488 akan membantu meminimalkan permintaan .

Saat menyisipkan galeri dari bingkai media, semua data yang diperlukan untuk merender galeri harus tersedia di koleksi wp.media.model.Attachments.all . Akan lebih baik menggunakan data yang sudah ada di memori alih-alih memunculkan permintaan baru untuk setiap gambar. Opsi lainnya adalah mengambil data untuk semua gambar dalam satu permintaan.

Saya memang mencoba menonaktifkan withAPIData untuk komponen GalleryImage dan semuanya tampak terus bekerja dengan benar, tetapi saya tidak menguji secara menyeluruh. Jika itu dihapus, galeri akan ditampilkan hampir seketika.

Masalah Terkait dan/atau PR

PR #2488 menempatkan bingkai media dalam keadaan yang benar saat mengedit galeri, tetapi juga mencegah permintaan AJAX terpisah untuk setiap gambar saat membuka modal.

[Block] Gallery [Feature] Media [Status] Blocked [Type] Bug [Type] Performance

Semua 3 komentar

Kebutuhan asli untuk permintaan per-gambar diperkenalkan di #2874 sebagai bagian dari penyisipan kode pendek galeri (cc @iseulde). Tampaknya untuk sebagian besar kasus, kami tidak memerlukan permintaan API sama sekali, jadi idealnya permintaan itu bisa dilewati. Untuk mendukung kode pendek galeri, saya ingin tahu apakah akan lebih baik jika transformasi itu sendiri dapat mengembalikan janji untuk menyelesaikan ke atribut blok, selama waktu itu dapat mengubah ID ke bentuk atribut yang diharapkan.

Saya menguji menambahkan blok galeri dengan 10 gambar dan kemudian menyegarkan halaman editor menggunakan WordPress 4.9.8 dan Gutenberg 4.1.1 melalui koneksi 72Mbps dan menemukan bahwa menyegarkan halaman galeri membutuhkan waktu ~6.2s (pengujian penuh: 1m3s ).

Saya percaya dengan perubahan terbaru dalam cara kami mengambil gambar bahwa ini sekarang berfungsi seperti yang diharapkan. Saya telah memverifikasi pada 4.3 bahwa waktu muat telah meningkat dari masalah yang dilaporkan ini dan bahwa gambar tidak dimuat seperti yang kami lihat di masa lalu. Saya pindah dari tonggak 5.0 RC karena ini bukan pemblokir ke RC.

PR yang awalnya disarankan digabung beberapa waktu lalu.

Apakah halaman ini membantu?
0 / 5 - 0 peringkat

Masalah terkait

franz-josef-kaiser picture franz-josef-kaiser  ·  3Komentar

BE-Webdesign picture BE-Webdesign  ·  3Komentar

youknowriad picture youknowriad  ·  3Komentar

spocke picture spocke  ·  3Komentar

aduth picture aduth  ·  3Komentar