Optimumkan prestasi halaman web: Kurangkan beban yang disebabkan oleh aliran semula dan lukisan semula, contoh kod khusus diperlukan
Dalam era perkembangan pesat Internet semasa, prestasi tapak web adalah penting untuk pengalaman pengguna dan kedudukan laman web. Pengguna mengharapkan untuk dapat melihat kandungan serta-merta apabila mereka membuka tapak web, dan bukannya menunggu proses pemuatan. Oleh itu, mengoptimumkan prestasi halaman web telah menjadi salah satu matlamat yang harus dicapai oleh setiap pembangun web.
Mengoptimumkan prestasi halaman web boleh bermula dari banyak aspek, antaranya mengurangkan operasi pengaliran semula dan mengecat semula adalah penting untuk meningkatkan prestasi halaman web. Aliran semula dan lukis semula ialah operasi asas apabila penyemak imbas memaparkan halaman web, tetapi kejadiannya yang kerap akan menyebabkan pemaparan halaman web menjadi perlahan, sekali gus menjejaskan pengalaman pengguna. Artikel ini meneroka cara untuk mengurangkan operasi aliran semula dan lukis semula serta menyediakan contoh kod khusus.
Konsep reflow dan redraw
Reflow merujuk kepada proses di mana apabila penyemak imbas memaparkan halaman web, ia mengira reka letak halaman web berdasarkan saiz, kedudukan, dsb. elemen DOM dan melukis semula ke skrin. Cat semula merujuk kepada proses melukis semula elemen mengikut gaya elemen DOM. Operasi pengaliran semula dan lukis semula adalah operasi yang memakan masa, jadi kita harus cuba mengelak daripada kejadian yang kerap berlaku.
Cara mengurangkan operasi pengaliran semula dan lukis semula
- Gunakan sifat transformasi dan kelegapan CSS3
Apabila menukar kedudukan dan saiz elemen, anda boleh menggunakan sifat transformasi CSS3 dan bukannya mengubah suai terus kiri, atas, lebar dan sifat ketinggian unsur . Kerana atribut transform hanya akan menyebabkan lukisan semula, bukan aliran semula. Begitu juga, anda boleh menggunakan atribut kelegapan untuk mengubah suai ketelusan elemen, yang hanya akan menyebabkan lukisan semula.
// Contoh: Gunakan transformasi untuk menggantikan atribut kiri dan atas
// Tidak disyorkan:
element.style.left = '100px';
element.style.top = '100px'
// Disyorkan:
elemen .style.transform = 'terjemah(100px, 100px)';
- Operasi elemen DOM dalam kelompok
Apabila anda perlu mengubah suai berbilang elemen DOM, elakkan menggunakan berbilang operasi tunggal dan gabungkannya ke dalam satu operasi kelompok. Oleh kerana setiap operasi pada DOM akan mencetuskan operasi aliran semula dan lukis semula, operasi kelompok boleh mengurangkan bilangan operasi aliran semula dan lukis semula serta meningkatkan prestasi.
// Contoh: Operasi kumpulan elemen DOM
// Tidak disyorkan:
elemen1.style.width = '100px';
// Disyorkan:
element1.style.width = '100px';
element2.style.width = '200px';
// Satu operasi hanya mencetuskan satu aliran semula dan lukis semula
Elakkan akses kerap kepada maklumat susun aturc maklumat susun atur elemen DOM (seperti offsetLeft, offsetHeight, dll.) melalui JavaScript akan mencetuskan penyemak imbas untuk melakukan operasi aliran semula. Oleh itu, cuba elakkan akses kerap kepada maklumat susun atur Anda boleh cache maklumat susun atur untuk mengelakkan pengiraan berulang.
-
// Contoh: Elakkan akses kerap kepada maklumat susun atur // Tidak disyorkan:
const height = element.offsetHeight;
// Mengakses offsetHeight akan mencetuskan operasi aliran semula
// Disyorkan:
offconst height = elemen. ;
//Maklumat susun atur cache untuk mengelakkan pengiraan berulang
Gunakan DocumentFragment
Apabila menggunakan JavaScript untuk mencipta sejumlah besar elemen DOM secara dinamik, anda boleh menggunakan DocumentFragment untuk mengurangkan operasi aliran semula dan lukis semula. DocumentFragment ialah serpihan dokumen ringan yang boleh dikendalikan di luar talian dan akhirnya dimasukkan ke dalam dokumen untuk mengurangkan beban rendering penyemak imbas.
-
// Contoh: Menggunakan DocumentFragment // Tidak disyorkan:
untuk (biar i = 0; i const element = document.createElement('div');
document.body.appendChild (elemen);
}
// Setiap kali elemen dimasukkan, reflow dan redraw akan dicetuskan
// Disyorkan:
const fragment = document.createDocumentFragment();for (biar i = 0; i const element = document.createElement('div');
fragment.appendChild(element);
}
document.body.appendChild(fragment);
// Masukkan semua elemen sekali gus, mencetuskan satu aliran semula dan Lukisan aliran semula
Ringkasan
Dengan mengurangkan operasi pengaliran semula dan lukis semula, kami boleh meningkatkan prestasi halaman web dengan hebat dan meningkatkan pengalaman pengguna. Artikel ini menerangkan beberapa cara untuk mengurangkan operasi aliran semula dan lukis semula, serta menyediakan contoh kod khusus. Saya harap kaedah ini akan membantu anda mengoptimumkan prestasi halaman web. Ingat, fikirkan sama ada setiap operasi akan menyebabkan aliran semula dan lukis semula Dengan mengoptimumkan kod dan mengurangkan operasi yang tidak perlu, halaman web anda akan menjadi lebih lancar dan lebih pantas.
Atas ialah kandungan terperinci Tingkatkan prestasi halaman web: kurangkan tekanan pengaliran semula dan lukisan semula. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!