Featured image of post 设置verel缓存

设置verel缓存

   
文章摘要
小tips……😋

前言

​ 来自教程推一下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缓存,否则无法实时响应修改

image-20241227115734018

在构建文件.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

image-20241227120524367

补充

区域设置保持默认就好,设置成香港卡卡的,估计用的人太多了,服务器少,错开时区也好

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自定义域名

Aliya の 笔记

但是每一次构建都会覆盖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(可选)
CC BY-NC-SA 4.0 创意的非商业派对入场券
最后更新于 2024-12-28 17:53
晚来天欲雪,能饮一杯无