mata utama
f12 , ctrl shift i atau safari pada macOS Cmd alt i susun atur/menyusun semula operasi, penyemak imbas dipaksa untuk mengira semula kedudukan dan saiz elemen halaman; 3. Komposisi Operasi, mengumpulkan bahagian yang ditarik halaman bersama untuk paparan pada skrin. Ini biasanya merupakan operasi yang memakan sumber pemproses.
Penyemak imbas berasaskan Chrome menyediakan tab "Audit" yang menjalankan alat mercusuar Google. Ia biasanya digunakan oleh pemaju aplikasi web progresif, tetapi juga menyediakan cadangan prestasi CSS.
Pilihan dalam talian
atau, gunakan alat analisis dalam talian yang tidak terjejas oleh peranti dan kelajuan dan keupayaan rangkaian. Kebanyakan alat boleh diuji dari lokasi yang berbeza di seluruh dunia:
CSS tidak mungkin menjadi penyebab langsung isu prestasi. Walau bagaimanapun, ia boleh memuat sumber kelas berat yang perlu dioptimumkan dalam beberapa minit. Contohnya:
x kb tidak bersamaan dengan kod CSS x kb. Imej binari dimuat turun selari dan memerlukan sedikit pemprosesan untuk diletakkan di halaman. Blok CSS yang diberikan dan mesti dihuraikan ke dalam model objek untuk diteruskan.
ke url font - sebagai contoh, &text=
untuk memaparkan "sitepoint" dalam sans terbuka. fonts.googleapis.com/css?family=Open Sans&text=SitePon
Pertimbangkan fon sistem operasi. Font web 500kb anda mungkin mesra jenama, tetapi jika anda beralih ke Helvetica atau Arial yang biasa digunakan, adakah sesiapa yang menyedarinya? Banyak laman web menggunakan fon web tersuai, jadi fon sistem operasi standard jauh lebih rendah daripada sebelumnya!
Elakkan menggunakan @import
@import
membenarkan sebarang fail CSS dimasukkan ke dalam fail CSS yang lain. Contohnya:
/* main.css */ @import url("base.css"); @import url("layout.css"); @import url("carousel.css");
Ini tidak berlaku. Peraturan boleh bersarang, jadi penyemak imbas mesti memuatkan dan menghuraikan setiap fail dalam rangka. Multiple tag dalam HTML akan memuatkan fail CSS selari, yang lebih cekap - terutamanya apabila menggunakan HTTP/2: @import
<link>
<link rel="stylesheet" href="base.css"> <link rel="stylesheet" href="layout.css"> <link rel="stylesheet" href="carousel.css">
CSS Flexbox digunakan untuk susun atur satu dimensi, yang boleh membungkus garisan ke baris seterusnya berdasarkan lebar setiap blok. Flexbox sangat sesuai untuk menu, galeri foto, kad, dan banyak lagi.
Kurangkan kod CSS
widgets/_carousel.css
. !important
untuk menimpa cascades. alat seperti UNCSS boleh membantu menghapuskan kod berlebihan dengan menganalisis HTML anda, tetapi berhati -hati tentang keadaan CSS yang disebabkan oleh interaksi JavaScript.
Kebangkitan CSS-in-JS membolehkan pemaju untuk mengelakkan ruang nama global CSS. Biasanya, nama kelas yang dijana secara rawak dicipta pada masa membina, jadi komponen tidak boleh bertentangan. Jika CSS-in-JS meningkatkan kehidupan anda, maka terus menggunakannya. Walau bagaimanapun, adalah wajar memahami kelebihan CSS yang mengalir, dan bukannya melawannya dalam setiap projek. Sebagai contoh, anda boleh menetapkan font lalai, warna, saiz, jadual, dan medan borang yang biasanya digunakan untuk setiap elemen di satu lokasi. Ia jarang mengisytiharkan setiap gaya dalam setiap komponen.
Bahkan pemilih CSS yang paling kompleks mengambil beberapa milisaat untuk menghuraikan, tetapi mengurangkan kerumitan akan mengurangkan saiz fail dan membantu penyemak imbas. Adakah anda benar -benar memerlukan pemilih ini? !
/* main.css */ @import url("base.css"); @import url("layout.css"); @import url("carousel.css");
Begitu juga, sedar tentang bersarang yang mendalam dalam preprocessors seperti SASS, di mana pemilih kompleks boleh dibuat secara tidak sengaja.
Beberapa sifat menjadikan lebih perlahan daripada yang lain. Untuk meningkatkan lag, cuba letakkan bayang -bayang kotak pada semua elemen!
<link rel="stylesheet" href="base.css"> <link rel="stylesheet" href="layout.css"> <link rel="stylesheet" href="carousel.css">
Prestasi penyemak imbas akan berbeza -beza, tetapi pada umumnya, sebarang operasi yang menyebabkan pengiraan semula sebelum lukisan akan lebih mahal dari segi prestasi:
border-radius
box-shadow
opacity
transform
filter
position: fixed
Animasi saiz atau kedudukan elemen boleh menyebabkan seluruh halaman dilayari semula pada setiap bingkai. Jika animasi hanya mempengaruhi tahap sintesis , prestasi dapat diperbaiki. Penggunaan animasi yang paling berkesan:
opacity
dan/atau transform
ke pan (bergerak), skala atau berputar elemen (ruang asal yang digunakan oleh elemen tidak akan berubah). Pelayar biasanya menggunakan GPU yang dipercepatkan perkakasan untuk memberikan kesan ini. Jika tidak ideal, pertimbangkan untuk menggunakan position: absolute
untuk mengeluarkan unsur -unsur dari aliran halaman supaya mereka boleh bernyawa dalam lapisan mereka sendiri.
will-change
membolehkan pengarang CSS menunjukkan bahawa unsur -unsur akan bernyawa supaya penyemak imbas dapat melakukan pengoptimuman prestasi terlebih dahulu. Sebagai contoh, untuk mengisytiharkan bahawa aplikasi itu ditukar kepada elemen:
/* main.css */ @import url("base.css"); @import url("layout.css"); @import url("carousel.css");
Sebarang bilangan sifat yang dipisahkan koma boleh ditakrifkan. Tetapi:
will-change
sebagai usaha terakhir untuk menyelesaikan masalah prestasi grafik vektor berskala (SVG) biasanya digunakan untuk logo, carta, ikon dan carta yang lebih mudah. Daripada menentukan warna setiap piksel seperti bitmap JPG dan PNG, SVG mentakrifkan bentuk seperti garis, segi empat tepat, dan bulatan menggunakan XML. Contohnya:
<link rel="stylesheet" href="base.css"> <link rel="stylesheet" href="layout.css"> <link rel="stylesheet" href="carousel.css">
body > main.main > section.first h2:nth-of-type(odd) + p::first-line > a[href$=".pdf"]
Ini akan menambah nod SVG terus ke DOM. Oleh itu, semua sifat gaya SVG boleh digunakan menggunakan CSS:
*, ::before, ::after { box-shadow: 5px 5px 5px rgba(0,0,0,0.5); }
Bilangan kod SVG tertanam dikurangkan, dan gaya CSS boleh digunakan semula atau animasi seperti yang diperlukan. Perhatikan bahawa menggunakan SVG di dalam
.myelement { will-change: transform; }
img
Malangnya:
Semasa mengurangkan permintaan HTTP, ia jarang memberikan manfaat yang jelas -terutamanya pada sambungan HTTP/2. Umumnya, elakkan bitmaps sebaris kecuali imej tidak mungkin berubah dengan kerap dan rentetan Base64 yang dihasilkan tidak mungkin melebihi beberapa ratus aksara.
Pengguna yang menggunakan alat analisis halaman Google biasanya akan melihat cadangan "inline kritikal CSS" atau "Mengurangkan render blocking stylesheets" . Memuatkan blok fail CSS, jadi anda boleh menggunakan langkah -langkah berikut untuk meningkatkan prestasi:
<head>
dalam html <style>
. Teknologi ini sudah pasti meningkatkan prestasi dan boleh memberi manfaat kepada aplikasi web atau satu halaman progresif dengan antara muka yang berterusan. Untuk laman web/aplikasi lain, faedah mungkin kurang jelas:
setiap
/* main.css */ @import url("base.css"); @import url("layout.css"); @import url("carousel.css");
. Rendering progresif boleh memberi manfaat kepada laman web besar di mana halaman individu dibina dengan pilihan komponen yang berbeza. <link>
Petua yang paling penting: Ketahui helaian gaya anda! Menambah banyak CSS dari stackoverflow atau bootstrap boleh menghasilkan hasil yang cepat, tetapi ia juga akan mengalir codebase anda dengan sampah yang tidak digunakan. Penyesuaian selanjutnya menjadi frustrasi sukar dan permohonan itu tidak akan menjadi cekap. CSS mudah dipelajari, tetapi sukar untuk menguasai. Jika anda ingin membuat kod klien yang sah, anda tidak boleh mengelakkan teknik ini. Memahami beberapa asas CSS boleh merevolusikan aliran kerja anda, meningkatkan aplikasi anda dan meningkatkan prestasi dengan ketara. Adakah saya kehilangan petua prestasi CSS kegemaran anda?
soalan yang sering ditanya mengenai mengoptimumkan prestasi CSS
Prestasi CSS dipengaruhi oleh pelbagai faktor. Pertama ialah saiz fail CSS. Fail yang lebih besar mengambil masa lebih lama untuk memuat turun dan menghuraikan, dengan itu melambatkan laman web. Faktor kedua adalah kerumitan pemilih CSS. Pemilih kompleks memerlukan lebih banyak kuasa pemprosesan untuk memadankan elemen pada halaman. Akhirnya, menggunakan animasi dan transformasi CSS juga boleh menjejaskan prestasi, terutamanya pada peranti mudah alih dengan kuasa pemprosesan terhad.
Terdapat pelbagai strategi untuk mengurangkan saiz fail CSS. Satu adalah untuk memadam gaya yang tidak digunakan. Alat seperti PurifyCSS boleh membantu mengenal pasti dan memadam CSS yang tidak digunakan. Strategi lain adalah untuk memampatkan CSS, yang menghilangkan watak -watak yang tidak perlu seperti ruang dan komen. Akhirnya, pertimbangkan untuk menggunakan alat pemampatan CSS atau membolehkan pemampatan GZIP pada pelayan untuk terus mengurangkan saiz fail.
pemilih CSS kompleks melambatkan laman web kerana mereka memerlukan lebih banyak kuasa pemprosesan untuk memadankan elemen pada halaman. Sebagai contoh, pemilih keturunan (mis., .parent .child
) lebih mahal daripada pemilih kelas (mis., .class
). Sebagai peraturan, pemilih harus disimpan sebagai mudah dan spesifik yang mungkin untuk meningkatkan prestasi.
Animasi dan transformasi CSS boleh menjejaskan prestasi dengan ketara, terutamanya pada peranti mudah alih dengan kuasa pemprosesan terhad. Mereka boleh menyebabkan susun atur susun atur dan redraws, yang boleh melambatkan laman web. Untuk meningkatkan prestasi, pertimbangkan untuk menggunakan atribut will-change
untuk memberitahu penyemak imbas terlebih dahulu yang atribut dan elemen akan animasi.
Mengoptimumkan CSS untuk peranti mudah alih melibatkan pelbagai strategi. Pertama, pertimbangkan untuk menggunakan pertanyaan media untuk memberikan gaya yang berbeza berdasarkan ciri -ciri peranti. Kedua, elakkan animasi dan transformasi yang kompleks yang melambatkan prestasi pada peranti mudah alih. Akhirnya, pertimbangkan untuk menggunakan imej responsif dan pemuatan malas untuk mengurangkan jumlah data yang anda perlukan untuk memuat turun.
Anda boleh menggunakan pelbagai alat untuk mengukur prestasi CSS. Wawasan Rumah Api Google dan Pagespeed dapat memberikan gambaran keseluruhan prestasi laman web, termasuk CSS. Di samping itu, panel prestasi alat pemaju Chrome dapat membantu anda mengenal pasti dan mengoptimumkan CSS yang mahal.
Walaupun CSS sendiri tidak secara langsung menjejaskan SEO, ia secara tidak langsung akan menjejaskan kedudukan anda. Laman web pemuatan perlahan (biasanya disebabkan oleh CSS yang tidak dapat dioptimumkan) boleh membawa kepada pengalaman pengguna yang buruk, yang boleh menjejaskan SEO anda secara negatif. Di samping itu, Google merawat kelajuan halaman sebagai faktor ranking, jadi mengoptimumkan CSS dapat membantu meningkatkan SEO anda.
preprocessors CSS seperti SASS dan kurang dapat membantu meningkatkan prestasi dengan membolehkan anda menulis lebih cekap dan mudah untuk mengekalkan kod. Mereka menyediakan ciri -ciri seperti pembolehubah, bersarang, dan campuran yang mengurangkan jumlah kod yang anda perlukan untuk menulis dan menjadikannya lebih mudah untuk dikendalikan.
CSS kritikal adalah jumlah minimum menyekat CSS yang diperlukan untuk menjadikan kandungan di atas skrin laman web. Dengan mengenal pasti dan menggabungkan CSS kritikal, anda boleh mempercepatkan rendering awal halaman anda, dengan itu meningkatkan prestasi persepsi.
Mengoptimumkan penghantaran CSS melibatkan pelbagai strategi. Pertama, pertimbangkan untuk merenung CSS kecil terus ke HTML untuk mengelakkan permintaan HTTP tambahan. Kedua, kelewatan CSS bukan kritikal untuk mengurangkan sumber menghalang sumber. Akhirnya, pertimbangkan untuk menggunakan HTTP/2 untuk menyampaikan fail CSS dengan lebih cekap.
Atas ialah kandungan terperinci 20 petua untuk mengoptimumkan prestasi CSS. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!