前言
来自教程推一下Vercel加速节点 虽然节点优选之后也不快,但是后半段的设置有点意思,设置vercel的CDN缓存,也不知道是不是重复设置,不过多多益善,官方文档
正文
配置
根据构建文件,会把static目录
下的静态文件都复制到公共仓库,所以,在static创建一个vercel.json
内容如下:设置缓存1年
{
"headers": [
{
"source": "/(css|js|img|images|fonts|search|tags|tiaozhuan|ts|links|scss)/(.*)",
"headers": [
{
"key": "Cache-Control",
"value": "public, max-age=31536000, immutable"
},
{
"key": "CDN-Cache-Control",
"value": "public, max-age=31536000, immutable"
},
{
"key": "Vercel-CDN-Cache-Control",
"value": "public, max-age=31536000, immutable"
}
]
},
{
"source": "/(favicon.*\\.ico)",
"headers": [
{
"key": "Cache-Control",
"value": "public, max-age=31536000, immutable"
},
{
"key": "CDN-Cache-Control",
"value": "public, max-age=31536000, immutable"
},
{
"key": "Vercel-CDN-Cache-Control",
"value": "public, max-age=31536000, immutable"
}
]
}
]
}
按需设置,不要把太多html缓存,否则无法实时响应修改
在构建文件.github\workflows\main.yml
中将
run:hugo --gc --minify
修改成(构建之前检查)
run: |
if [ ! -d "static" ]; then
mkdir static
fi
if [ ! -f "static/vercel.json" ]; then
echo '创建vercel.json'
touch static/vercel.json
fi
hugo --gc --minify
检查
打开浏览器开发者工具
查看网络请求
检查静态资源的响应头中是否包含设置的缓存控制头
查看 x-vercel-cache
头的值是否为 HIT
MISS: 表示资源第一次被请求,没有缓存,直接从源站获取
HIT: 表示请求直接命中了Vercel的边缘缓存,从最近的CDN节点返回
可以和 https://1143520.github.io/ 相互对照
可以看到响应头设置成功
Cache-Control: public, max-age=31536000, immutable
CDN-Cache-Control: public, max-age=31536000, immutable
Vercel-CDN-Cache-Control: public, max-age=31536000, immutable
补充
区域设置保持默认就好,设置成香港卡卡的,估计用的人太多了,服务器少,错开时区也好
Speed Insights别开
边缘CDN对于部分网络不如github.io,已经回退,而且优化CDN后是自带HIT命中的
格式:
- name: Build Hugo static files # 部署静态资源
run: hugo --gc --minify # 要有空格
如果使用前面的https://github.com/xingpingcn/enhanced-FaaS-in-China 建议修改json,不对CDN缓存,避免冲突(目前博客使用的模式)
对整个静态目录缓存(不影响使用)vercel.json
{
"headers": [
{
"source": "/(.*)",
"headers": [
{
"key": "Cache-Control",
"value": "public, max-age=3153600"
}
]
}
]
}
另外需要减少测试网站速度。否则会触发vercel的安全检查。
github pages 自定义域名
大佬的优化CDN对于部分网络会抽风,直接访问pages应该也是比较快的
不使用vercel,直接在github pages自定义域名
但是每一次构建都会覆盖public仓库,所以,还要创建文件static\CNAME
填入
hugo-git.1143520.xyz
在构建文件.github\workflows\main.yml
中
最后这里加上
- name: Deploy to Github Pages # 部署到Github Pages页面
uses: peaceiris/actions-gh-pages@v3
with:
personal_token: ${{ secrets.PERSONAL_TOKEN }}
external_repository: 1143520/1143520.github.io
publish_dir: ./public # hugo 生成到 public 作为跟目录
publish_branch: main # Github Pages 所在分支
commit_message: ${{ github.event.head_commit.message }}
cname: hugo-git.1143520.xyz # 添加自定义域名设置
force_orphan: true # 强制创建新的提交历史(可选)
enable_jekyll: false # 禁用 Jekyll(加快构架,避免出错)
enable_https: true # 启用强制 HTTPS(可选)