Mengatasi kesesakan prestasi: penyelesaian lukisan semula dan aliran semula untuk jurutera hadapan

PHPz
Lepaskan: 2024-01-26 08:24:19
asal
797 orang telah melayarinya

Mengatasi kesesakan prestasi: penyelesaian lukisan semula dan aliran semula untuk jurutera hadapan

Lukis semula dan penyahsulitan aliran semula: Cara jurutera bahagian hadapan menangani kesesakan prestasi

Pengenalan:
Dengan perkembangan pesat Internet, peranan jurutera bahagian hadapan menjadi semakin penting. Mereka perlu mengendalikan reka bentuk dan pembangunan antara muka pengguna sambil turut memfokuskan pada mengoptimumkan prestasi laman web. Dalam pengoptimuman prestasi bahagian hadapan, lukisan semula dan aliran semula adalah kesesakan prestasi biasa. Artikel ini akan memperkenalkan prinsip lukisan semula dan aliran semula secara terperinci, dan menyediakan beberapa contoh kod praktikal untuk membantu jurutera bahagian hadapan menangani kesesakan prestasi.

1. Apa itu mengecat semula dan mengalir semula

  1. Mengecat semula: Apabila penampilan elemen berubah tetapi tidak menjejaskan reka letaknya, pengecatan semula dicetuskan. Lukisan semula biasanya berlaku apabila sifat CSS berubah, seperti warna, sempadan, dsb. Lukis semula hanya akan melukis semula bahagian halaman yang kelihatan dan tidak akan menjejaskan reka letak dan kedudukan elemen lain.
  2. Aliran Semula: Apabila reka letak elemen berubah, aliran semula akan dicetuskan. Reflow mengira semula kedudukan dan saiz elemen dan membina semula pepohon render. Aliran semula akan menjejaskan reka letak keseluruhan halaman dan mungkin menyebabkan elemen lain dialirkan semula dan dilukis semula.

2. Sebab untuk melukis semula dan mengalir semula

  1. Operasi DOM: Apabila kami memanipulasi elemen DOM, seperti memasukkan, memadam atau mengubah suai elemen, lukisan semula dan aliran semula akan berlaku. Oleh itu, operasi DOM yang kerap boleh menyebabkan kemerosotan prestasi.
  2. Perubahan gaya CSS: Apabila kami mengubah suai gaya CSS sesuatu elemen, seperti menukar warna, saiz, dll., ia akan menyebabkan lukisan semula dan aliran semula. Oleh itu, gaya CSS perlu digunakan dengan berhati-hati untuk mengelakkan kehilangan prestasi yang tidak perlu.
  3. Cetus sifat dan kaedah tertentu: Apabila kita memanggil beberapa sifat dan kaedah yang perlu diberikan, seperti offsetLeft, clientHeight, dsb., lukisan semula dan aliran semula akan dicetuskan.

3. Cara mengoptimumkan lukisan semula dan aliran semula

  1. Kurangkan operasi DOM: Elakkan operasi DOM yang kerap, gabungkan berbilang operasi kepada satu operasi sebanyak mungkin, dan kurangkan bilangan lukisan semula dan aliran semula.
    Contoh kod:

    let container = document.getElementById('container');
    let fragment = document.createDocumentFragment();
    for(let i = 0; i < 1000; i++) {
      let div = document.createElement('div');
      fragment.appendChild(div);
    }
    container.appendChild(fragment);
    Salin selepas log masuk
    Salin selepas log masuk
  2. Gaya pengubahsuaian kelompok: Cuba gunakan nama kelas CSS untuk mengubah suai gaya elemen dalam kelompok dan elakkan mengubah suai terus gaya elemen individu untuk mengurangkan bilangan lukisan semula dan aliran semula.
    Contoh kod:

    let elements = document.getElementsByClassName('box');
    for(let i = 0; i < elements.length; i++) {
      elements[i].classList.add('highlight');
    }
    Salin selepas log masuk
  3. Gunakan DocumentFragment untuk cache operasi DOM: Letakkan operasi DOM ke dalam DocumentFragment, kemudian masukkannya ke dalam dokumen sekaligus, yang boleh mengurangkan bilangan lukisan semula dan aliran semula.
    Contoh kod:

    let container = document.getElementById('container');
    let fragment = document.createDocumentFragment();
    for(let i = 0; i < 1000; i++) {
      let div = document.createElement('div');
      fragment.appendChild(div);
    }
    container.appendChild(fragment);
    Salin selepas log masuk
    Salin selepas log masuk

Atas ialah kandungan terperinci Mengatasi kesesakan prestasi: penyelesaian lukisan semula dan aliran semula untuk jurutera hadapan. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan