Créer des sites Web performants et réactifs est une priorité absolue pour les développeurs Web. Une façon d’y parvenir consiste à hiérarchiser le contenu, ce qui implique de charger le contenu critique avant le contenu non critique. Dans cet article, nous explorerons des techniques et des outils avancés pour aider les développeurs Web à optimiser leurs projets en utilisant la priorisation du contenu.
Utiliser PurgeCSS ( https://purgecss.com/ ) et Critical ( https://github.com/addyosmani/ critique ) extrait uniquement les règles CSS nécessaires au rendu du contenu au-dessus de la ligne de flottaison. PurgeCSS supprime les CSS inutilisés, tandis que Critical extrait et intègre les CSS critiques, améliorant ainsi le rendu du contenu critique.
Exemple
Installer PurgeCSS et Critical :
npm install purgecss critical
Créer un fichier de configuration pour PurgeCSS :
// purgecss.config.js module.exports = { content: ['./src/**/*.html'], css: ['./src/css/main.css'], output: './dist/css/', };
Extraire et intégrer les CSS critiques :
const critical = require('critical').stream; const purgecss = require('@fullhuman/postcss-purgecss'); const postcss = require('postcss'); // 使用 PurgeCSS 处理 CSS 文件 postcss([ purgecss(require('./purgecss.config.js')), ]) .process(cssContent, { from: 'src/css/main.css', to: 'dist/css/main.min.css' }) .then((result) => { // 使用 Critical 内联关键 CSS gulp.src('src/*.html') .pipe(critical({ base: 'dist/', inline: true, css: ['dist/css/main.min.css'] })) .pipe(gulp.dest('dist')); });
Effet de levier fractionnement de code et importations dynamiques dans Webpack ( https://webpack.js.org/guides/code-splitting/ ) pour diviser JavaScript en morceaux plus petits. Cela garantit que seuls les scripts critiques sont chargés initialement et que les scripts non critiques sont chargés en cas de besoin.
Exemples
// webpack.config.js module.exports = { // ... optimization: { splitChunks: { chunks: 'all', }, }, }; // 动态导入的使用 async function loadNonCriticalModule() { const nonCriticalModule = await import('./nonCriticalModule.js'); nonCriticalModule.run(); }
Optimisez les images à l'aide d'outils comme ImageOptim ( https://imageoptim.com/ ) ou Squoosh ( https://squoosh.app/ ). Implémentez des images réactives à l'aide des attributs srcset et des formats d'image modernes tels que WebP ou AVIF pour améliorer les performances.
Exemple
<picture> <source srcset="image.webp" type="image/webp"> <source srcset="image.avif" type="image/avif"> <img src="image.jpg" alt="Sample image"> </picture>
rel="preload" Utilisez des conseils sur les ressources tels que , , rel="prefetch" et rel="preconnect" pour déterminer le chargement des ressources critiques. Priorisez et pré-extraire les ressources non critiques pour une navigation future.
Exemple
<!-- 预加载关键资源 --> <link rel="preload" href="critical.css" as="style"> <!-- 预取非关键资源 --> <link rel="prefetch" href="non-critical-image.jpg" as="image"> <!-- 预连接到重要的第三方来源 --> <link rel="preconnect" href="https://fonts.gstatic.com">
Utilisez Google Workbox ( https://developers.google.com/web/tools/workbox ) pour configurer un service worker pour mettre en cache les ressources des clés et les servir immédiatement lors des chargements de pages suivants, améliorant ainsi les performances.
Exemple
// workbox.config.js module.exports = { globDirectory: 'dist/', globPatterns: ['**/*.{html,js,css,woff2}'], swDest: 'dist/sw.js', }; // 使用 Workbox CLI 生成 Service Worker npx workbox generateSW workbox.config.js
En tirant parti des techniques et des outils avancés de priorisation du contenu, les développeurs Web peuvent améliorer considérablement les performances et l'expérience utilisateur de leurs sites Web. Se concentrer d'abord sur la fourniture de contenu critique et différer le contenu non critique permet aux utilisateurs d'accéder rapidement aux informations dont ils ont besoin. La mise en œuvre de ces techniques avancées dans vos projets Web améliorera les performances perçues, réduira les taux de rebond et augmentera l'engagement des utilisateurs.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!