Skip to content

本站近期的亿点点更改

Updated: at 01:10编辑

0x00 前情概要

最近我花了不少时间对我的博客进行了一些技术上的优化和改进,目的就是为了给大家提供一个更快、更流畅且更加有趣的阅读体验。今天我想跟大家分享一下这些变化背后的故事。

0x01 卡顿的页面

JavaScript 造成页面卡顿?砍!

提起网站的速度,我们都知道一个快速响应的网站能显著改善用户体验。为了确保我的博客能够提供最佳的浏览体验,通过 Google 的 PageSpeed Insights 工具,我们可以对站点进行全面分析,可以发现站点会加载一些第三方类库,为了我们的加载速度,我们可以:

  1. 砍掉这部分功能
  2. 使用工具或者手动精简第三方库大小,只保留需要的方法
  3. 自己写一个 / 整合进现有第一方库

在这里我选择第一个方案,直接砍掉无伤大雅的功能(反正大部分访客也用不到)。

字体过大?使用懒加载

在网站设计中,当所选字体文件过大时,它们会显著增加页面的加载时间,尤其是在移动网络环境下。更糟糕的是,大字体文件可能导致页面内容在字体加载完成前后的突然抖动,也就是我们常说的累积布局偏移(Cumulative Layout Shift, CLS)。为了解决这个问题,我选择了 Cloudflare Fonts 作为解决方案。

简单来说,Cloudflare Fonts 通过重写网页的 HTML 来工作。它删除了 Google Fonts 链接并将其替换为内联 CSS,这样可确保字体通过 Cloudflare 的来提供,从而优化性能并保护了用户的隐私。Cloudflare Fonts 支持的浏览器版本我列在下方,供大家参考。

Edge 16+
Safari 10+
Firefox 44+
Opera 22+
IE 9+
Chrome for Android 115+
Safari on iOS 10+
Samsung Internet 5+

如果你想了解更多,推荐你去 Cloudflare Fonts 官方文档 看看。

0x02 糟糕的图像大小

可能你没有注意到,在 2024 年 12 月 4 日之前,本站的头像(也就是favicon.png)实际上是 480×480px 超大高清图,这导致他的大小一度来到了 17 kb,会严重拖慢各位朋友的友情链接页面(自托管头像除外)。由于本站没有任何地方使用到了它,所以 PageSpeed 一直发现不出来(。

favicon.png

使用 Cloudflare Images 解决难点

本着能白嫖就白嫖的原则,我选择使用 Cloudflare Images 解决我的难点。Cloudflare Images 提供端到端解决方案,旨在帮助我们从单个 API 简化图像的处理。

Cloudflare 支持非常多的来源文件扩展,具体列在下方仅供参考

我选择使用 URL 的方式传递本域上的图片,通常的传递方式如下,每一项的具体解释可以参考官方文档

https://<ZONE>/cdn-cgi/image/<OPTIONS>/<SOURCE-IMAGE>

依照这个构建方式,我很快通过文档构建了属于我的图片优化参数,如下:

https://blog.liuzhen932.top/cdn-cgi/image/quality=50,format=auto/favicon.png

你可能会说,欸?你这改了但是我没有收到你的头像修改请求啊?别着急,下面就是我无感切换图片源的方法————转换规则。

使用转换规则无感传递优化选项

在我们改完后不想更新 URL 怎么办呢?我们可以选择使用转换规则,长话短说,转换规则可以将源 URL 转换为目标 URL 的服务器端操作。对于网站访客来说他们并不能看到重写,因为浏览器中显示的 URL 不会更改

为了避免请求循环(源地址 - CF 加载 - 源地址…),文档推荐我们在每个表达式后面加上 ...and (not (any(http.request.headers["via"][*] contains "image-resizing")))

这里贴出我所使用的表达式方案:

我所使用的表达式方案,仅供参考

这部分参考 Serve images from custom paths,希望对你有所帮助!

0x03 评论系统调优

Artalk 的介绍

https://artalk.js.org/

表情

待填写,丢个链接在这里 https://blog.liuzhen932.top/assets/OwO.json

0x05 总结

待填写


上一篇
[译] Cloudflare 2024 年度回顾
下一篇
Steam 假入库代码详解分析

人机验证:请刷新页面以加载评论区