From 77024b5809828be2c332135d67f2e7cf81f35584 Mon Sep 17 00:00:00 2001 From: liumangmang Date: Mon, 11 May 2026 15:51:32 +0800 Subject: [PATCH] perf: optimize blog assets for low bandwidth --- nginx.conf | 4 +++ scripts/optimize-images.mjs | 30 ++++++++++++------ src/.vuepress/config.ts | 3 ++ .../public/assets/images/cover3.webp | Bin 0 -> 14552 bytes src/.vuepress/theme.ts | 9 +++++- src/accounts/README.md | 1 - src/intro.md | 2 +- 7 files changed, 36 insertions(+), 13 deletions(-) create mode 100644 src/.vuepress/public/assets/images/cover3.webp diff --git a/nginx.conf b/nginx.conf index cca4ab3..2492d54 100644 --- a/nginx.conf +++ b/nginx.conf @@ -8,12 +8,16 @@ server { gzip on; gzip_vary on; gzip_min_length 1024; + gzip_comp_level 6; + gzip_proxied any; gzip_types application/javascript application/json + application/rss+xml application/xml image/svg+xml text/css + text/javascript text/plain text/xml; diff --git a/scripts/optimize-images.mjs b/scripts/optimize-images.mjs index f2d053b..f6d8e0c 100644 --- a/scripts/optimize-images.mjs +++ b/scripts/optimize-images.mjs @@ -26,7 +26,7 @@ function formatBytes(bytes) { async function optimizeImage(inputPath, outputPath, options = {}) { const { width, quality = 80, outputExt = '.webp' } = options; const originalSize = await getFileSize(inputPath); - + let pipeline = sharp(inputPath); if (width) { @@ -40,19 +40,20 @@ async function optimizeImage(inputPath, outputPath, options = {}) { } const buffer = await pipeline.toBuffer(); - - // For standard images, if webp is larger, we'll keep it if it's the specific target like bgImage - // but for general article images we might skip. + const optimizedSize = buffer.length; + + // Threshold: webp must be at least 10% smaller than original const isTargeted = inputPath.includes(SOURCE_DIR); - if (!isTargeted && buffer.length >= originalSize && outputExt === '.webp') { - console.log(`Skipping ${path.basename(inputPath)}: Optimized size (${formatBytes(buffer.length)}) >= original (${formatBytes(originalSize)})`); + const reductionRatio = (originalSize - optimizedSize) / originalSize; + + if (!isTargeted && reductionRatio < 0.1 && outputExt === '.webp') { + console.log(`Skipping ${path.basename(inputPath)}: Reduction ${ (reductionRatio * 100).toFixed(2) }% < 10% threshold`); return null; } await fs.mkdir(path.dirname(outputPath), { recursive: true }); await fs.writeFile(outputPath, buffer); - const optimizedSize = buffer.length; - + return { inputPath, outputPath, @@ -60,7 +61,7 @@ async function optimizeImage(inputPath, outputPath, options = {}) { outputName: path.basename(outputPath), originalSize, optimizedSize, - reduction: ((originalSize - optimizedSize) / originalSize * 100).toFixed(2) + '%' + reduction: (reductionRatio * 100).toFixed(2) + '%' }; } @@ -89,7 +90,16 @@ async function main() { if (res) results.push(res); } - // 4. Optimize Article Images (In-place WebP generation) + // 4. Optimize Cover Images in Public Assets + const coverImages = await glob('src/.vuepress/public/assets/images/cover*.{jpg,jpeg,png}'); + console.log(`Found ${coverImages.length} cover images to process...`); + for (const img of coverImages) { + const outputWebp = img.replace(path.extname(img), '.webp'); + const res = await optimizeImage(img, outputWebp, { quality: 80 }); + if (res) results.push(res); + } + + // 5. Optimize Article Images (In-place WebP generation) const articleImages = await glob('src/**/*.{jpg,jpeg,png}', { ignore: ['src/.vuepress/dist/**', 'src/.vuepress/public/**'] }); diff --git a/src/.vuepress/config.ts b/src/.vuepress/config.ts index 9f17df5..f9472fe 100644 --- a/src/.vuepress/config.ts +++ b/src/.vuepress/config.ts @@ -14,6 +14,9 @@ export default defineUserConfig({ head: [['link', { rel: 'icon', href: '/favicon.png' }]], + shouldPrefetch: false, + shouldPreload: false, + theme, bundler: viteBundler({ viteOptions: { diff --git a/src/.vuepress/public/assets/images/cover3.webp b/src/.vuepress/public/assets/images/cover3.webp new file mode 100644 index 0000000000000000000000000000000000000000..26dcaf6a65635f4365b8d96a77c692a3177768ca GIT binary patch literal 14552 zcmeIYV~}QDw=MXjZQHhO+h(ORD^Y2q($o7-P)&W2?$YO3rWt09q2F%9_gD#Do9rk(WTSL1+OG8eoEUoEb9YWYqbj z_oI%;2oaX{?~}oF$s_WOm5bYhAAOSz1B*q#H>MAPrMtL4LY`j^&r-vsI(`FlJJjdhx>upZBJk_5aU3793s^0VFPo4_Dz1cv#!4GXKvbLF#83|JCc9&grbz zx`X_`4xfdHm^Keu!dUkspdx?-D}N7p~WTu|ju9Ge!gxxcYy?4?#B!%Sb33rL=(mAkE8jzbWmJG5wET_VnR@i-+>* zy~n6728nVloC`|T^2@h=*HJVqX$16N8E zwT~YjvxHIQ{++PkF^(DfEj_Z{FCU=K-scbYD z0KvL*C}q@t5@)38xO6#E^y2{DPaZW$?Rs7`uy^p^sTxREF1e&KfXeqpc~0u-SnAvU zUyL0rWu}T0mO@dx*gz@eCGr?I7z?z8A=1z0g47SI`-bz1u53zU{vTPMGfs7la*|eC z*8PBgt0+Zs-E{bQ`Y#lgPk^E!&OdzL7w6N-H}U*@3~$_xWnC2C&!&bv!;I_35>BA_ zzo>*98@A3C%$m`jA;-bX;{K=`w#c#x3{>CJKRS|C?a!vAr6E0Vx}D#WD!<#H>ae7q z5Qz%5k1)#F&1DoGsb&Qo^sj=^+I-wWY4DqVFS6K?dpd5f{U0LUzoS&z43b}+*#wF{!p9gplsy>p=y0>$<1Z~|6gKQzGWJM%qU(D`uta^0I� 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 u#OLSz${9fO!P + !page.path.includes('/work/log/') && + !page.path.includes('/demo/') && + !page.path.includes('/accounts/') && + !page.path.includes('SpringSecurity'), + maxSuggestions: 10, + }, // 组件配置 components: { diff --git a/src/accounts/README.md b/src/accounts/README.md index 5584126..52d7bed 100644 --- a/src/accounts/README.md +++ b/src/accounts/README.md @@ -1,7 +1,6 @@ --- title: 账号密码管理 index: false -search: false navbar: false sidebar: false breadcrumb: false diff --git a/src/intro.md b/src/intro.md index cd72b21..548f753 100644 --- a/src/intro.md +++ b/src/intro.md @@ -1,6 +1,6 @@ --- icon: circle-info -cover: /assets/images/cover3.jpg +cover: /assets/images/cover3.webp date: 2025-05-06 ---