国内部分地方访问Vercel的速度极慢,访问不稳定,于是就需要用到国内的CDN来做网站内容的加速,对于小体量的个人网站价格很合适,基本不花什么钱。
内容分发网络(CDN)是一种优化网络内容传输的分布式系统架构。它通过在全球各地部署服务器节点,将网站的静态资源存储在离用户较近的位置,从而减少网络延迟,提高内容加载速度。
备案
首先想要在国内接入CDN,你需要有一个已经进行过ICP备案的域名。这个备案的过程比较繁琐,流程较长,这是部分开发者使用国外服务商的原因之一。不过顺利的是,我大概花费一、两周的时间完成了这件事。
域名加速
首先要理解CDN的流程,假设有: 原有的博客网站http://kizamu.anror.com,新起一个专走CDN加速的网站http://me.anror.com,此时终端用户访问的访问路径如下:
用户访问资源 http://me.anror.com/test.txt 此时 CDN 节点尚未缓存该资源,则 CDN 节点回源针对kizamu.anror.com域名进行解析,得到源站服务器地址,假设为1.1.1.1,则访问1.1.1.1服务器,在其上的 Web网站kizamu.anror.com路径下,找到 test.txt 文件并缓存,最后返回给用户。
以腾讯云为例,首先在CDN控制台、域名管理下进行配置,具体如下:

其他都好理解,主要是回源HOST这里新手容易踩坑。所以我们要先理解,什么是回源?
在CDN(内容分发网络)中,"回源"指的是当CDN节点上没有用户请求的内容或者缓存内容已经过期时,CDN服务器需要向源站(即原始服务器)重新获取内容的过程。这个机制确保了CDN可以提供最新的内容,同时也是CDN运作的核心环节。当CDN节点接收到用户请求后,首先会检查自身缓存;如果缓存中没有所需内容或内容已过期,CDN就会触发回源请求,从源站获取最新数据,然后将新内容缓存并返回给用户。
明白回源过程后,就能理解,这里的回源HOST其实就是指回源请求的HOST,所以填源站的HOST即可。
HTTPS转发
配完之后,因为HTTP下会有很多安全限制,所以还需要启用CDN的HTTPS,包括生成CDN加速域名的证书、启用HTTP->HTTPS自动转发等。

内容预热
静态网站,CDN配置并部署完成后,由于CDN节点上其实目前并没有源站内容,所以用户访问网站时CDN节点需要先向源站请求内容,再返回给用户。此时容易出现网站内容加载不全、网站第一次无法访问的情况。Vercel托管不能主动向CDN节点PUSH,所以需要事先让CDN主动请求源站,缓存源站的内容。预热需要把网站的路径都提供给CDN服务商,记得启用URL Encode。

这里的URL路径,可以直接使用Site Map生成,比如我博客的填写如下:
https://me.anror.com/
https://me.anror.com/about/
https://me.anror.com/archives/
https://me.anror.com/categories/休闲/
https://me.anror.com/categories/例子/
https://me.anror.com/categories/学习经验/
https://me.anror.com/categories/开发经验/
https://me.anror.com/categories/开发问题/
https://me.anror.com/categories/收藏/
https://me.anror.com/categories/教程/
https://me.anror.com/categories/数据结构与算法/
https://me.anror.com/categories/日志/
https://me.anror.com/categories/系统维护/
https://me.anror.com/categories/记录/
https://me.anror.com/categories/闲谈/
https://me.anror.com/friends/
https://me.anror.com/page/2/
https://me.anror.com/page/3/
https://me.anror.com/page/4/
https://me.anror.com/page/5/
https://me.anror.com/page/6/
https://me.anror.com/posts/human-system/
https://me.anror.com/posts/global-uniq-ids/
https://me.anror.com/posts/web-transport-explainer/
https://me.anror.com/posts/sse/
https://me.anror.com/posts/opfs/
https://me.anror.com/posts/your-own-signal/
https://me.anror.com/posts/webgl-start/
https://me.anror.com/posts/package-managers/
https://me.anror.com/posts/esbuild/
https://me.anror.com/posts/event-loop/
https://me.anror.com/posts/cdn/
https://me.anror.com/posts/centeros-rtmp/
https://me.anror.com/posts/centos-install/
https://me.anror.com/posts/create-company-email/
https://me.anror.com/posts/data-structures-linked-list/
https://me.anror.com/posts/data-structures-queue/
https://me.anror.com/posts/data-structures-recursion/
https://me.anror.com/posts/data-structures-sort/
https://me.anror.com/posts/data-structures-sparse-array/
https://me.anror.com/posts/data-structures-stack/
https://me.anror.com/posts/docker-deploy/
https://me.anror.com/posts/easy-ui/
https://me.anror.com/posts/editormd-ufile-upload/
https://me.anror.com/posts/embed/
https://me.anror.com/posts/flyway-data-base-migration/
https://me.anror.com/posts/github-sso/
https://me.anror.com/posts/gitment/
https://me.anror.com/posts/golang-starter/
https://me.anror.com/posts/h2-database-migration/
https://me.anror.com/posts/h2-database/
https://me.anror.com/posts/how-to-use-icons/
https://me.anror.com/posts/idea-lombok/
https://me.anror.com/posts/idea-multi-project/
https://me.anror.com/posts/int-and-integer/
https://me.anror.com/posts/java-http-client/
https://me.anror.com/posts/js-number-limit/
https://me.anror.com/posts/json-html-convert/
https://me.anror.com/posts/jsonp-request/
https://me.anror.com/posts/jwt/
https://me.anror.com/posts/leetcode-1/
https://me.anror.com/posts/markdown/
https://me.anror.com/posts/media-source-extensions/
https://me.anror.com/posts/miyazawa-kenji/
https://me.anror.com/posts/mybatis-plus-pagination/
https://me.anror.com/posts/mysql-error-2013/
https://me.anror.com/posts/nginx-proxy/
https://me.anror.com/posts/page-interceptor/
https://me.anror.com/posts/pip-shadowsocks/
https://me.anror.com/posts/redis-cluster/
https://me.anror.com/posts/redis-lock/
https://me.anror.com/posts/sftp-upload-download/
https://me.anror.com/posts/solid-and-react/
https://me.anror.com/posts/solr-cloud/
https://me.anror.com/posts/solr-error-solrj-beans-binding-exception/
https://me.anror.com/posts/solr-tomcat/
https://me.anror.com/posts/solr/
https://me.anror.com/posts/solrj/
https://me.anror.com/posts/spirited-away/
https://me.anror.com/posts/spring-and-jedis/
https://me.anror.com/posts/spring-global-id-generator/
https://me.anror.com/posts/ssm-security/
https://me.anror.com/posts/ssm-starter/
https://me.anror.com/posts/storage-break/
https://me.anror.com/posts/vue-1/
https://me.anror.com/posts/vue-2/
https://me.anror.com/posts/vue-3/
https://me.anror.com/posts/web-audio/
https://me.anror.com/posts/websocket-chat-room/
https://me.anror.com/posts/websocket-chat-single/
https://me.anror.com/posts/xshell-ssh-linux/
https://me.anror.com/projects/
https://me.anror.com/tags/
https://me.anror.com/tags/上传下载/
https://me.anror.com/tags/云空间/
https://me.anror.com/tags/信息安全/
https://me.anror.com/tags/博客维护/
https://me.anror.com/tags/千与千寻/
https://me.anror.com/tags/全局唯一id/
https://me.anror.com/tags/分布式锁/
https://me.anror.com/tags/前端音视频/
https://me.anror.com/tags/宫泽贤治/
https://me.anror.com/tags/开发知识/
https://me.anror.com/tags/排序/
https://me.anror.com/tags/权限安全/
https://me.anror.com/tags/数据分页/
https://me.anror.com/tags/数据库/
https://me.anror.com/tags/数据结构/
https://me.anror.com/tags/数组/
https://me.anror.com/tags/栈/
https://me.anror.com/tags/梯子/
https://me.anror.com/tags/直播/
https://me.anror.com/tags/用户关系管理项目/
https://me.anror.com/tags/登录认证/
https://me.anror.com/tags/硬盘/
https://me.anror.com/tags/算法/
https://me.anror.com/tags/腾讯企业邮/
https://me.anror.com/tags/虚拟机/
https://me.anror.com/tags/视频播放/
https://me.anror.com/tags/评论系统/
https://me.anror.com/tags/远程连接/
https://me.anror.com/tags/递归/
https://me.anror.com/tags/银河铁道之夜/
https://me.anror.com/tags/链表/
https://me.anror.com/tags/队列/
https://me.anror.com/tags/canvas/
https://me.anror.com/tags/docker/
https://me.anror.com/tags/easyui/
https://me.anror.com/tags/email/
https://me.anror.com/tags/error/
https://me.anror.com/tags/flyway/
https://me.anror.com/tags/ftp/
https://me.anror.com/tags/gin/
https://me.anror.com/tags/github/
https://me.anror.com/tags/go/
https://me.anror.com/tags/golang/
https://me.anror.com/tags/h2/
https://me.anror.com/tags/httpclient/
https://me.anror.com/tags/icon/
https://me.anror.com/tags/idea/
https://me.anror.com/tags/intellij-idea/
https://me.anror.com/tags/java/
https://me.anror.com/tags/javascript/
https://me.anror.com/tags/jedis/
https://me.anror.com/tags/js/
https://me.anror.com/tags/js跨域请求/
https://me.anror.com/tags/json/
https://me.anror.com/tags/jsonp/
https://me.anror.com/tags/jwt/
https://me.anror.com/tags/leetcode/
https://me.anror.com/tags/linux/
https://me.anror.com/tags/linux系统/
https://me.anror.com/tags/lombok插件/
https://me.anror.com/tags/long/
https://me.anror.com/tags/markdown/
https://me.anror.com/tags/maven/
https://me.anror.com/tags/maven聚合工程/
https://me.anror.com/tags/media-source-extensions/
https://me.anror.com/tags/mybatis/
https://me.anror.com/tags/mybatis分页插件/
https://me.anror.com/tags/mysql/
https://me.anror.com/tags/nginx/
https://me.anror.com/tags/react/
https://me.anror.com/tags/redis/
https://me.anror.com/tags/snowflake/
https://me.anror.com/tags/socket/
https://me.anror.com/tags/solid/
https://me.anror.com/tags/solr/
https://me.anror.com/tags/solrj/
https://me.anror.com/tags/spring-security/
https://me.anror.com/tags/springboot/
https://me.anror.com/tags/ssm/
https://me.anror.com/tags/ubuntu/
https://me.anror.com/tags/ucloud/
https://me.anror.com/tags/uidgenerator/
https://me.anror.com/tags/video/
https://me.anror.com/tags/vpn/
https://me.anror.com/tags/vue/
https://me.anror.com/tags/web-audio/
https://me.anror.com/tags/websocket/