Featured image of post 整合图片资源,优化网站访问速度

整合图片资源,优化网站访问速度

前言

​ 之前博客打开总是卡半天,虽然使用了第三方的vercel CDN, 还将文章封面压缩过,但是静态资源加载依然缓慢,没办法,为了兼容美观和速度,只能上CDN了,了解过后,发现虽然国内有一些不错的性价比亚太CDN,但是未备案的域名也用不了怪不得(xingpingcn/enhanced-FaaS-in-China CDN资源都是台湾啥的),退而求其次,选择一种比较冒险的方法——白嫖大厂图床

正文

寻找稳定的不删图或者少删图的大厂图床

​ 在论坛经过搜索之后,对大佬Linuors 收集的国内的大厂图床很感兴趣,老哥也很爽快,直接就给了上传接口,摸索了一下,发现都是一些不设置人机验证,访问比较快的接口,感谢大佬!由于不想滥用导致被封,还是不暴露接口信息了

抓取POST请求

​ 除了大佬给的接口,自己也在网上找到一些套壳的大厂公益图床,这些图床大多隐藏了原始接口,但是图片实实在在的上传到了大厂的图床上,也返回了一样的链接,像这一种就比较直接,可以直接复制原始上传信息,利用AI工具筛选,找到有用的认证信息,接入自己的图床

image-20241221213740574

image-20241221213908859

​ 还有一种,比如微博和阿里经常使用不直接对post请求返回url,而是先返回特殊(可能base64)编码过的图片数据,如果可以预览的话,再刷新一次,复制图片链接可以看到直链,这种要么上传的原始数据大多都是返回的编码数据不好分析,要么弯弯绕绕,有好几次请求,而且认证信息实名或者过期时间很短,干脆放弃。

上传图片

​ 最后在大佬的带领下找到了好些不错的接口,jd,美团,4399等等……再将他们整合起来形成了一个python脚本,使用request发送POST请求对指定的图片集体上传,返回json格式的链接列表,以后如果一个图片挂了,也能迅速更换其他备用源,由于防止滥用,也不便公开。

​ py脚本已经上传到了RN服务器,以后少量图片可以通过alist上传,之后一键运行python脚本获取链接,大量图片建议先在本地加个前缀,批量重命名。

image-20241221232004501

图片展示

​ 图片只要上传了,有效期就只能看厂家心情了,58图床当天上传的就马上全删了,不过还是有一批备用,方便以后寻找资源和快速更换链接,随意建了一个静态图片资源站,显示一些经常使用的图片和大厂图床的链接,最不济全挂了,也还有服务器根目录返回的图片背锅,图片展示

​ 也可以转webp格式或者avif新兴压缩少损格式使用,比png小得多。

实际使用

​ 这一篇文章的封面是24,那就找24的链接进行替换,包括双引号

image-20241221215639009

image-20241221215710322

image-20241221215804162

现在初次加载就快的多了

修复后的文章初始模板

先生成随机数作为图片id,再直接从对应json文件读取相应字段的链接填入

---
title: "{{ replace .Name "-" " " | title }}"
slug: 
description: 
keywords: 
date: {{ .Date }}
lastmod: {{ .Date }}
draft: false
toc: true
weight: false
imgid: {{ $id := string (add 1 (mod (now.UnixNano) 26)) }}{{ if lt (len $id) 2 }}0{{ end }}{{ $id }}
image: {{ $jsonFile := printf "static/images/random/%02s.json" $id }}{{ with os.ReadFile $jsonFile }}{{ $json := . | unmarshal }}{{ index $json "4399" }}{{ end }}
license: 
comments: false
summary: 小tips……😋
categories: [suibi]
tags: [日常]
ai: false
---

# 前言

    1

# 正文

    1

补充

图片格式处理工具

​ 目前主要使用3种方式,第一种最直接,直接改后缀名(能用就行),第二种使用特殊工具

FileConverter.exe,转格式,压缩成webp都很方便,第三种使用开源工具,转换成新兴的avif格式,来自论坛的AvifGo (有时间可以自己下载下来改一下)

图片名批处理

​ 使用自己写的name.bat,支持前缀,序号,后缀重命名(如果有重复命名就先加一个前缀,让文件夹没有和需要的一样的命名)

@echo off
chcp 65001 >nul
setlocal enabledelayedexpansion

:: 提示用户输入前缀
set /p "prefix=请输入文件名前缀(直接回车则只用数字命名): "

:: 提示用户输入起始数字
set /p "start_num=请输入起始数字(直接回车默认从01开始): "

:: 提示用户是否需要统一后缀
set /p "change_ext=是否需要统一修改后缀?(Y/N,直接回车默认N): "
if /i "!change_ext!"=="Y" (
    set /p "new_ext=请输入新的后缀名(例如:jpg): "
    :: 确保后缀名前有点
    if not "!new_ext:~0,1!"=="." set "new_ext=.!new_ext!"
)

:: 如果用户没有输入起始数字,设置默认值为1
if "!start_num!"=="" (
    set "start_num=1"
    set "num_length=2"
) else (
    :: 移除开头的0以获取实际数值
    set "actual_num=!start_num!"
    for /f "tokens=* delims=0" %%a in ("!start_num!") do set "actual_num=%%a"
    if "!actual_num!"=="" set "actual_num=0"
    
    :: 计算原始输入的长度作为格式长度
    set "num_length=0"
    set "temp_str=!start_num!"
    :strlen_loop
    if not "!temp_str!"=="" (
        set /a num_length+=1
        set "temp_str=!temp_str:~1!"
        goto strlen_loop
    )
    
    :: 设置实际的起始数字
    set "start_num=!actual_num!"
)

:: 设置图片所在文件夹路径(默认为当前文件夹)
set "folder=."

:: 设置计数器为用户输入的起始数字
set /a count=!start_num!
:: 添加一个文件计数器
set /a files_processed=0

:: 先创建临时文件列表
dir /b /a-d "%folder%\*.jpg" "%folder%\*.png" "%folder%\*.gif" "%folder%\*.jpeg" > temp_files.txt 2>nul

:: 从临时文件列表读取并重命名
for /f "usebackq delims=" %%f in ("temp_files.txt") do (
    :: 构建新文件名
    set "newname="
    
    :: 如果前缀不为空,添加前缀和连字符
    if not "!prefix!"=="" (
        set "newname=!prefix!-"
    )
    
    :: 构建数字部分,根据指定长度补零
    set "padded_num=000000!count!"
    set "formatted_num=!padded_num:~-%num_length%!"
    set "newname=!newname!!formatted_num!"
    
    :: 获取文件扩展名或使用新的后缀
    if /i "!change_ext!"=="Y" (
        set "ext=!new_ext!"
    ) else (
        set "ext=%%~xf"
    )
    
    :: 重命名文件
    ren "%%f" "!newname!!ext!"
    
    :: 计数器加1
    set /a count+=1
    :: 已处理文件数加1
    set /a files_processed+=1
)

:: 删除临时文件
del temp_files.txt

echo 重命名完成!
echo 共处理了 %files_processed% 个文件
pause
CC BY-NC-SA 4.0 创意的非商业派对入场券
最后更新于 2025-01-17 22:17
晚来天欲雪,能饮一杯无