起因
先前网站目录列表包含了一个动图和一张高清图片,每次打开加载的很慢,动图甚至会卡得只剩几帧。
图片加载除网速外,还跟图片自身质量和托管图片的服务器有关。
首先我尝试压缩高清图片的质量,但效果并不显著,反而图片模糊得看不清了,原因可能是动图加载在加载过程中占了大部分线程。
图片压缩
Photoshop压缩: 文件>导出>存储为web所用的格式 在这里你可以选择压缩大小和颜色数量,并通过预览查看压缩后的大小。
Asprite压缩: 小体积图片或动图格式的文件快速压缩,选择导出处的比例,或者添加脚本自定义压缩。
但是本站引用网络上的高清图片加载的却很快,猜想如果把图片上传到国内服务器,然后引用该图片链接,可以加快页面和图片加载速度。
图床
不同图床试验并没有发现明显速度差异,但图床还有被封,丢失的风险,因此在这里放图片做比较
(hello公益版图床即将过期,2024/12/19注)
免费图床无需登录:
hello图床 每张最大上传5MB,测速良好
picui图床每张最大上传10MB,一次最多5张,服务器不在国内,速度较慢
其他图床有的需要注册,有的服务器在国外,就不试了。
图片上传后再引用生成的链接,网页就快很多了。
jsdelivr加速
然而,有时候图片数量庞大,如果此时一个一个去上传获取链接再引用过来,未免也太麻烦了。
并且图床也不是很安全,有时候图片会丢失,如果不注册,管理起来也不方便。
jsdelivr是一个快速免费的公用cdn,它能加速外网服务器资源的获取。
具体使用方法如下:
https://cdn.jsdelivr.net/gh/<用户名>/<仓库名>@<发布版本号>/<文件路径>
这个链接获取资源的速度会快许多,因此用这个链接批量访问我们托管在github的图床就能够很快的展示图片了,同时也能跟本地的脚本很好地搭配使用。
放一个快速获取图片链接的python代码
def generate_image_markdown(folder_path, output_file):
# 支持的图片格式
image_extensions = ['.jpg', '.jpeg', '.png', '.gif']
# 打开输出文件
with open(output_file, 'w', encoding='utf-8') as outfile:
# 遍历文件夹中的所有文件
for filename in os.listdir(folder_path):
# 检查文件是否是图片
if any(filename.lower().endswith(ext) for ext in image_extensions):
# 写入html格式的图片引用
outfile.write(f'<img src="https://cdn.jsdelivr.net/gh/sanqi-normal/sanqi-normal.github.io/photo/collection/img_right/{filename}">\n')
这样一来,上传图片就变得非常轻松容易
所以,日常博客可以直接拖图片上传到公共图库,数量非常多的图片可以上传到GitHub后使用jsdelivr加速获取
追加
使用jsdelivr加速后一开始打开正常,后来发现打不开了,查询后发现可能是加速cdn受到了dns污染,更换未受污染的子域名fastly.jsdelivr,目前尚不清楚效果如何
追加的追加:jsdelivr的子域名testingcf.jsdelivr.net使用正常,速度良好
追加的追加的追加: 现在你可以看到之前存在图床里的图片都丢了,所以说公共图床还是算了,没有办法长久。我许多问题的解决方法都卡在服务器这里,赶快放假吧,放假了一定要搭一个自己的服务器。
此方悬停