继上一轮改造过后,比较拖页面加载速度的主要有三点:
第 1 点在页面仍然托管在 GitHub Pages 的前提下,似乎没有什么好办法能产生质的飞跃;本篇主要改善了第 2 点和第 3 点。
0x01 图片资源加速
这里所说的图片主要是指文章里引用的图片。
我一直将图片放在博客源码根目录的 images 文件夹下,引用图片的习惯写法是这样的:
![after use cdn](/images/posts/github/cdn-after.png)
如果想将这个图片地址替换为 jsDelivr 的地址,需要做的就是将 /images
替换为 https://cdn.jsdelivr.net/gh/mzlogin/mzlogin.github.io@master/images
。
一处一处替换行不行?当然也行,但后面写新文章时要引用图片,还得手动写这一长串,不方便;万一 jsDeliver 出状况,也不好一键切换回来。有没有一劳永逸的方法?当然也有,我们从 Jekyll 的 layout 机制来想办法。
Jekyll 的 layout 可以理解为页面模板,它是可以继承的,比如我的博客的所有页面模板有一个共同的祖先模板 _layouts/default.html,模板里可以使用 Liquid 语法对内容进行处理,我们可以利用这一点,来自动完成批量替换的工作。
关键代码如下:
{% assign assets_base_url = site.url %}
{% if site.cdn.jsdelivr.enabled %}
{% assign assets_base_url = "https://cdn.jsdelivr.net/gh/" | append: site.repository | append: '@master' %}
{% endif %}
{% assign assets_images_url = 'src="' | append: assets_base_url | append: "/images" %}
{% include header.html %}
{{ content | replace: 'src="/images', assets_images_url }}
{% include footer.html %}
大意就是,如果打开了启用 jsDelivr 加速的开关,就将 content
里的 src="/images"
替换为 src="https://cdn.jsdelivr.net/gh/mzlogin/mzlogin.github.io@master/images"
,否则替换为 src="https://mazhuang.org/images"
。
以上便达成了我们的目的。
0x02 站内搜索引用的 JSON 资源加速
这个 JSON 文件编译前长这样:
Jekyll 编译后长这样:
这样的资源是没有办法直接通过替换网址来用 jsDelivr 加速的,因为 jsDelivr 上缓存的是编译前的文件,而我们需要的是编译后的。
那我们就想办法:
关键步骤如下:
0x03 结语
相关文章:
Original: https://www.cnblogs.com/mazhuang/p/13779379.html
Author: mzlogin
Title: 使用 jsDelivr 免费加速 GitHub Pages 博客的静态资源(二)
原创文章受到原创版权保护。转载请注明出处:https://www.johngo689.com/572778/
转载文章受原作者版权保护。转载请注明原作者出处!