Ligen Gallery图片优化及CDN加速
/ / 点击 / 阅读耗时 4 分钟在 https://gallery.ligen.net 上线测试过程中,旧版本相册主题逐渐暴露出了不少问题:Google 字体阻塞渲染、首屏图片加载延时、图片体积过大、重复加载脚本等。为了提升访问体验,我对相册主题进行了多处优化。经过实测,优化后的网站在桌面端与移动端均达 90+ 高分。如果你在访问中发现问题,希望能得到你的反馈。
性能与安全优化:
一、后端 PHP & 网络传输优化
- 配置提前提取与安全默认值:缓存配置变量,减少多处读取开销与未定义错误。
- Early Hints 预加载首图:通过 HTTP Link 头告知浏览器提前下载首张图片。
- CDN 域名资源预解析与立连:对图片 CDN 使用 dns-prefetch 和 preconnect 提升加载。
- Cloudflare 图像压缩集成:服务端拼接 URL 动态生成压缩版图源,降低带宽开销。
二、CSS & 字体加载优化
- 核心 CSS 高优先级预加载:使用 rel=”preload” 提前获取关键样式文件。
- 图标库非阻塞异步加载:利用 media=”print” 巧解 FontAwesome 阻塞渲染问题。
- 本地 WebFont 内联及 swap 策略:避免第三方字体加载延迟,启用 font-display: swap。
- 无闪烁 Fallback 字体处理:在 noscript 中保留降级样式,提升无 JS 环境体验。
三、图像与前端性能优化
- 首屏 LCP 图像高优先级加载:对前 2 张关键图片添加 fetchpriority=”high” 提升 LCP。
- 基于 Base64 的图片懒加载:使用占位图结合 data-src 延迟非首屏图片下载。
- 原生 IntersectionObserver 监听:高性能监听视口滚动,支持 fallback 兼容机制。
- 图片加载失败优雅降级:通过 onerror 绑定替代图,避免裂图影响视觉。
四、安全防护与代码细节优化
- 跨站脚本 (XSS) 转义过滤:使用 htmlspecialchars 对图片链接与标题安全输出。
- 外链安全属性重定向:新窗口打开链接添加 noopener,noreferrer 防止原点攻击。
- 邮箱地址防爬虫反垃圾策略:利用 JS 事件延迟拼接 Mailto 链接,防止邮箱被抓取。
- 底部 JS 脚本 defer 延迟执行:所有底部 Script 加上 defer,保障 DOM 顺畅解析。