Creating high-performance and responsive websites is a top priority for web developers. One way to achieve this is through content prioritization, which involves loading critical content before non-critical content. In this article, we’ll explore advanced techniques and tools to help web developers optimize their projects using content prioritization.
Use PurgeCSS ( https: //purgecss.com/ ) and Critical ( https://github.com/addyosmani/ritic ) extract only the necessary CSS rules required to render above-the-fold content. PurgeCSS removes unused CSS, while Critical extracts and inlines critical CSS, improving the rendering of critical content.
Example
Install PurgeCSS and Critical:
npm install purgecss critical
Create a configuration file for PurgeCSS:
// purgecss.config.js module.exports = { content: ['./src/**/*.html'], css: ['./src/css/main.css'], output: './dist/css/', };
Extract and inline critical CSS :
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')); });
Use code splitting and dynamic import in Webpack ( https://webpack.js.org/guides/code-splitting/ ) Split JavaScript into smaller chunks. This ensures that only critical scripts are loaded initially and non-critical scripts are loaded when needed.
Example
##
// webpack.config.js module.exports = { // ... optimization: { splitChunks: { chunks: 'all', }, }, }; // 动态导入的使用 async function loadNonCriticalModule() { const nonCriticalModule = await import('./nonCriticalModule.js'); nonCriticalModule.run(); }
Example
<picture> <source srcset="image.webp" type="image/webp"> <source srcset="image.avif" type="image/avif"> <img src="image.jpg" alt="Sample image"> </picture>
Example
##<!-- 预加载关键资源 -->
<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">
##
// 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
The above is the detailed content of Advanced content prioritization technology for web developers. For more information, please follow other related articles on the PHP Chinese website!