碎碎念

其实很早之前就想写这篇文章了,因为我注意到不少朋友并不太理解什么是内容分发网络CDN,以及类似于 Jsdelivr 这样的CDN服务。大家在搭建自己网站的时候,可能会忽视这一点,导致站点虽然在某些地区运行得还不错,但在其他位置的访问速度却很不理想。毕竟,大家都知道,一些国外的服务访问在国内受限,如果不做优化,加载会很慢,甚至会出现访问不了的情况。遗憾的是,网上关于这个话题的讲解并不集中,很多信息都比较零散。

这篇文章就想从零开始,聊聊我自己接触到的一些网站加速方案,顺便解答一下大家可能存在的一些疑问。虽然我自己也不是这方面的专家,但希望能通过这篇文章给大家提供一些思路,帮助那些正在面临访问速度困扰的朋友们找到合适的解决方案。毕竟,网站速度提升不仅能给用户带来更好的体验,也能帮助站点在搜索引擎中获得更好的排名,何乐而不为呢?

优化内容

域名

域名是一个网站的门面,如果有能力的话,我还是建议自己购买一个域名,哪怕是一个较偏门的域名,只需要你拥有所有的dns解析权限,后续换域名只需要永久重定向即可,完全不影响访问,也不会影响SEO(最直观的就是搜索引擎中的排名)。

DNS解析

我们访问网站的步骤是,首先在网址栏输入域名,通过dns解析中的记录,会将域名转化为IP,通过ip即可找到服务器,由于我们发送的网站请中是有来源字段的,也就是我们通过哪个域名访问到的这个服务器,在服务器中,就会通过nginx分流,使其找到服务器上设置的域名,这样就可以返回正确的数据了。

最常用的解析分为两类:

  • A解析:一个域名对应一个IP;
  • CNAME解析:一个域名对应多个IP,后面我会解释;

下面会介绍一些常用的域名。

免费域名

不可解析域名

我们可以免费获取到的子域名经常有:github.iovercel.appnetlify.apppages.devworkers.dev,注意,我使用的是子域名,因为这些域名你都没有修改dns解析的权限,你只能获取到系统所分配的一个免费域名用作访问。

  • github.iogithub page服务所分配的自动域名,前缀常为用户名称,使用广泛,可信度极高,但是经过测试,该域名的服务器均位于美国加州,距离较远,延迟较大,速度较慢,其实并不适合国内建站,但是好处就是并没有被国内屏蔽,在正常网络下大部分地区可以正常访问。

    GitHub节点分布情况

  • vercel.appvercel公司的系统分配域名,十分良心,节点遍布世界各地,在国内使用十分广泛,唯一缺点就是,从前几年开始,vercel.app域名被SNI阻断,导致无法直接访问,所以可以通过绑定域名来解决阻断的问题,经过优化后,甚至可以做到全绿的状态。

    vercel速度检测

  • netlify.app:来自另一个免费托管平台,但是由于注册审核略显严格,至今尚未注册成功,所以无法检测,但是域名本身并未封禁,速度也较快。

  • pages.dev:赛博活佛Cloudflare的静态页面服务,域名可以直接使用,速度较快,但是仍然无法自行修改dns解析,由于近期cf颁发规则,禁止使用优选,这里我使用最基本的站点进行测速。

    pages测速

  • workers.dev:仍然属于赛博活佛,但是这个域名在国内是属于被阻断的状态,所以不建议直接使用。

以上是比较常用的一些域名,还有很多类似的个人域名分发站点,本站极不推荐这种域名,因为很有可能会在站点日活量达到一定程度后,强行解析到广告站点,这样对友链的朋友站点会有很严重的伤害,虽然可能存在一些较为良心的站点,但是为了安全,希望大家选择值得信赖的托管平台。

可解析域名

这类域名一般是免费站点的最佳选择,但是随着羊的毛渐渐被薅秃,很多知名的免费域名逐渐变得不稳定,如:eu.orgus.kg等等,再加上不法分子的利用,域名逐渐被污染,不少免费二级域名都陨落于此,目前可用的屈指可数,这里我列举几个目前我认为还可以申请且可以解析的免费域名。

  1. cloudns:我的第一个域名也是来自于此,这里有很多前缀可以自行申请,但是不一定可以解析到cloudflare上,需要看其具体政策,但是无论是在cloudns还是Cloudflare上进行解析,至少也是可以解析,并且因为也属于大厂,被劫持的可能性几乎不存在。
  2. Github学生包:GitHub可以申请学生包,相信大家都知道了,但是可能你还不了解的事,GitHub可以申请一年的me域名,名称任选,可以解析到任何你想要解析的地方,甚至可以将dns服务器放在国内以进一步提高访问速度。

付费域名

既然付了费,那么一定是可以解析的应该不会有笨蛋去花钱买二级不可解析的域名吧,比如国内的万网,腾讯云,华为云,都是可以购买域名的,且首年基本上都会有优惠,买域名的话,可以先考虑一下,你是准备购买一年后一点点续费,还是一次性买十年,想好这个问题,我们继续向下进行。

逐渐黑产化

有些域名很便宜,比如六位数字的.xyz域名,这就是经典的黑产域名,这些域名可能会在晚上的部分地区被阻断,尤其是在国内的一些网络环境中。由于它们通常价格低廉,且容易被滥用,很多黑产分子会利用这些域名来进行恶意操作,诸如钓鱼、勒索病毒传播等。为了提升网络安全性,部分网络运营商会在晚间流量高峰期或夜间时段对这些域名进行屏蔽处理,甚至有时会直接将整个后缀列入黑名单。

虽然说很多黑产都是来源于此处,但是其实被屏蔽的仍然是极少数,如果个人使用一般不会被屏蔽,比不稳定的二级分发域名会强很多,所以如果预算不宽裕,可以买一个六位数字的xyz域名用作过渡,等手头宽裕后再尝试更加美观的域名。

除此之外,还有一些价格较为便宜的域名,比如.top,但是说实话,我对这个域名的印象并不好,详见下面这篇文章。

2024年7月25日,互联网名称与数字地址分配机构于7月16日致函.top域名注册机构的所有者[PDF 文件],要求其在8月中旬之前给予回复,建立和完善管理网络钓鱼报告和暂停滥用域名的系统,否则将被吊销域名销售许可证npmmirror也将top列入了黑名单,需要手动申请才可以继续使用。恰巧,我的第一个域名也是.top,在什么也没做的情况下遭到了无妄之灾,我的很多朋友也是一样的情况,所以我个人对于.top可能有部分偏见。

一年年续费

如果你想要较为漂亮的域名,且选择一年一年的续费,我建议购买以下的域名:

域名列表

这是阿里云域名续费价格总表,所有以上提到的域名续费价格均未超过40元,且新购价格通常也会有一定优惠。然而,购买域名时要特别注意续费价格,而不是被低廉的新购价格迷惑了眼睛。对于新手来说,这一点尤为重要,一定要提前了解清楚续费情况,以免后续费用过高而忍痛放弃域名。

购买十年

如果一次性购买十年,较为便宜的有.top.site.fun等,但是仍然需要注意续费价格,以上三种续费价格均小于100,甚至top的续费价格仅需32元,但是由于上面所说的要求,我个人并不推荐购买.top

十年价格域名列表

以上域名价格可能会有波动,大家也可以去阿里云官网进行查看。

以上就是域名推荐,一个好的域名是一个网站的门面,当然在很多加速中,域名也是不可或缺的一环,下面我将说明如何对网站进一步优化。

DNS解析

网站访问,首先要经过的就是DNS解析,解析速度对于网站的访问速度一般没有什么特别大的影响,因为这部分数据经常会在本地缓存,第二次访问几乎不需要时间,但是我个人建议将解析移到国内,毕竟能提升一点算一点(QAQ)。

A解析

A 解析(Address Record)是将域名映射到服务器的 IP 地址,是最基本的一种解析方式。当你输入网址时,DNS会将域名解析成IP地址,指引浏览器访问正确的服务器。如果你的站点访问主要面向国内用户,可以将解析指向国内的服务器,提升解析速度,避免跨境解析带来的延迟。

CNAME解析

CNAME(Canonical Name)解析是一种将一个域名指向另一个域名的方式。简单来说,CNAME记录并不直接将域名解析成IP地址,而是将域名指向另一个域名。这个指向的目标域名最终会通过A解析或其他类型的记录转化为IP地址,从而完成访问,如果你在使用华为云,你可以尝试打开DNS解析控制台,进入解析页面,你可以找到不同地域解析的方式:

分地域解析

比如vercel的优选加速,实际上是通过很多的A记录实现的,如下图所示:

自建vercel优选

经过我测速,我将不同线路中访问最快的主机,通过A记录分别解析到移动、联通、电信以及默认,这样就实现了一个最简单的加速CNAME节点,你可以将你的站点通过cname解析到这个地址,从而实现加速,当然你还可以更加细致的划分,比如按照省划分,这样会做到更快的速度,但是相应的,手动维护起来可能会更加费事。

以上就是DNS解析的基本工作原理,其中讲解了CDN通过CNAME解析实现分线路加速,下面我们讲讲其中的CDN加速。

内容分发CDN

内容分发,意思就是将你网站中的所有静态文件包括页面htmljscss等,放在服务商的服务器中,且拷贝多份放在世界各地,每次访问时根据不同地理位置就近访问,达到防并发卡顿,加快访问速度的目的。

cdn采用的方式通常是CNAME解析,CNAME可以看作为A记录的合集,如果你尝试用测速网站检测CNAME地址的DNS记录,你就会发现他在不同位置会有不同的A解析,

如果你有一个域名,你就可以轻松的通过设置源站接入cdn,这个源站既可以是域名也可以是ip,比如你想加速github page的域名,只需将GitHub page地址作为源站即可,每次更新文章后,手动去后台刷新缓存,即可达到很完美的速度,无论是多么差的源站,只要选择正确合适的cdn,一定可以达到极好的效果,这也是静态博客的最大优势,文件完全静态,可以任意存储,而动态博客由于直连数据库,页面的内容可能随时发生变化,所以并不适合普通cdn加速。

其实个人使用的话,内容分发并不贵,甚至很多都有用不完的免费额度,但是门槛较高,如果想要使用国内cdn,需要备案域名才可以使用,备案域名又需要服务器,这样,成本自然而然就高了起来,当然,并不是说没有备案就无法使用cdn了,有很多cdn有亚太专线,专门针对于不想备案,但是又想国内有良好速度的网站。下面是我常见的一些有着免费额度,很容易接入的cdn

云服务免费流量免费存储请求限制缺点地址
多吉云20GB/月10GB200万次/月存储桶需要自己绑定域名,且需要备案dogecloud.com
无畏云30GB/月无限制无法设置上限,不安全,需要备案su.sctes.com
又拍云10GB/月10GB无限制存储不给 HTTPS,加入联盟麻烦upyun.com
七牛云10GB/月15GB100万次/月流量较少upyun.com
Cloudflare无限制100,000次/天速度较慢cloudflare.com
初七云25GB/月无限制亚太 CDN 较慢,免费存储无chuqiyun.com
丘盾云无限制无限制完全免费,但缺乏其他支持scdn.koxiuqiu.cc

当然以上数据为个人简单整理,可能稍微有欠缺,或者不正确,仅供参考,顺序也不代表推荐排序,选择一个够用,习惯的即可!

Vercel优化

其实vercel也是一个CDN,不过因为所有线路都在国外,所以可能网速上并不是很乐观,由于厂商的就近分配策略,导致大部分的国内站点均分配到了同一节点,如中国香港,中国台湾的节点,导致网络拥塞,从而造成卡慢。

此时就出现了优选节点,优选节点并不是将节点本身的性能提高,而是从众多节点中找寻到访问速度最快的节点,定时检测,然后再在不同地理位置上分流,从而缓解单节点压力,虽然可能节点距离更远,但是速度却会大幅度提升。

这里我仅推荐一个优化节点。xingpingcn

使用起来也很简单,只需要将他系统所给的cname.vercel-dns.com修改为项目中的优选CNAME地址,即可大幅度提升网站访问速度,实测低峰期可以做到国内全深绿。

简单测速

除了vercelcloudflareNetlify等厂商也是可以通过类似的方法优化的,甚至你可以自己测速,自行搭建优选节点,感受一下解析的魅力,只需要分地域,使用A解析,将其解析到最快的IP即可。

有了cdn,网站本身的速度基本上就能保证了,但是仍然会出现加载速度慢的情况,那就是下面这个啦!

JSCDN

我不清楚这个名字准不准确,但是为了区分,我就这样写啦!该类cdn和上述cdn不同,JSCDN主要是针对于GitHubnpmwordpress上的静态文件进行的加速,或许可以加速html,但是一般不会有人这样干(听说是有点不道德哦),Jsdelivr就是其中最典型的代表。

hexo站点经常会引用一些外部直链文件,且很多主题都是默认Jsdelivr,由于Jsdelivr在早些年被吊销了备案,导致在国内的访问速度一落千丈,目前已经成为了大部分站点的”累赘”,哪怕上了CDN也是完全不济于事,因为静态直链文件走的是另一条线路,并没有通过你的CDN加速。如果你的站点加速慢,可以尝试点击F12,搜索一下”jsdelivr.net”,如果页面中存在这个文件,那么,你的网站加载速度大概率是被他拖慢啦!

解决方法也很简单,只需要替换掉jsdelivr的所有地址即可,国内也有很多高速的jscdn无偿为大家提供服务,下面是我找到的部分目前可用的cdn,希望能够帮到大家,为公益服务致敬!

序号域名描述
1cdn.iocdn.cc括彩云国内CDN提供支持
2s4.zstatic.net多个云服务融合国内CDN提供支持
3cdn.jsdmirror.com多个云服务融合国内CDN提供支持
4jsdelivr.topthink.com阿里云CDN提供支持(无主页链接)

在前面有一篇文章中,我介绍了怎么在butterfly主题中怎么全篇替换,这里我也不再赘述,详见:

如果你能做到以上的所有步骤,那么,恭喜你,你的网站的速度目前已经不逊色于任何主流网站!

Service Worker

Service Worker又被简称为sw,体验上会加速网站访问,其实他的根本原理就是在本地存了所有的网站静态文件,每次访问会直接从本地访问,已达到加速的目的,且会有一个生命周期和更新指令,当网站更新后,下次访问网站时,会检测到一个截然不同的版本值,就会自动刷新缓存。

这种的做法可能会造成极为严重的后果,如果配置不好,可能会将文件的💩拉在用户本地,占用空间,甚至可能造成用户永远无法看到你的最新更新,所以这里我不进行讲解,因为我自己也不会,如果你实在想实现,可以尝试实现下面的项目,由空梦维护开发的一个项目,比原生的sw有更完善的功能:

不再多说,我们进行最后一个部分,国内外分流!

国内外分流

为什么要进行国内外分流呢?主要还是用于抗攻击,众所周知,大部分的网络攻击均来自于国外,而又众所周知,我们的赛博活佛Cloudflare可以防住海量伤害且完全免费,但是在国内,cf的访问速度越来越慢,甚至部分地区会出现无法访问的情况,所以,国内外分流就显得很有必要了,国内走常规国内cdn线路,国外走Cloudflare线路,不仅可以防止拖慢国内用户访问速度,还可以防御国外攻击的同时,给国外线路加速(Cloudflare在国外可是首屈一指的CDN供应商)。

分流其实也非常简单,比如本站选择的方式是分流到了Cloudflare PagesPages允许在域名解析不接入的情况下,通过CNAME自定义域名,这里我们可以通过DNS解析提供商给予的境外分流,实现分线路解析,如下图所示。

国内外分流

这里cdn服务商检测不到异常,是因为dns检查服务器的地域,比如国内cdn自然在国内,cloudflare自然在国外,所以在对应的区域内,均检测正常,但是如果出现国外线路的DNS检查服务器在国内,可能会出现无法通过域名检测的情况,比如初七云,如果你仅将国外线路分流到初七云,可能会出现域名解析错误的情况发生:

域名解析错误

但是实际体验下来,初七云就算解析错误,仍然可以使用,这个就和cdn厂商的设定有关系了,找准这点问题即可,如果是免费用户,推荐国外分流Cloudflare,国内任选。

总结

  • 总算是哔哔完了,可能这里的网站加速方法并不算完全全面,但我敢肯定,采用这些方法一定能让你的站点提升速度,达到与大部分网站不相上下的水平。如果你正面临访问速度的问题,或许这些方案能帮助你大幅优化站点性能。希望这篇文章能为你提供一些有价值的参考。

    下面是我目前站点的整体加速流程,我整理了一个简单的清单,希望对你有帮助:

    • 域名:自购 — 域名的选择很重要,尽量挑选那些可靠的域名注册商,并且要注意域名的解析速度。
    • DNS解析:阿里云DNS — 采用国内快速、稳定的DNS服务,减少因DNS解析带来的延迟。
    • 内容分发CDN:多吉云 — 使用了一个国内CDN服务,能够根据用户的地理位置智能选择最合适的加速节点,提高网站加载速度。
    • JSCDN:自建,国内CDN — 对于静态资源,我使用了国内 CDN 进行加速,特别是JavaScriptCSS文件,极大缩短了文件的加载时间。
    • SW:无 — 目前没有使用 Service Worker,不过可以考虑后续进行渐进式Web应用的优化,提升离线访问能力和缓存策略。
    • 国内外分流Cloudflare — 为了更好的国内外访问体验,我在站点上配置了Cloudflare的智能分流功能,确保国内外用户都能通过最快的节点访问站点。

    通过合理配置DNS解析、CDN加速和一些基础优化,可以大幅提升网站的访问速度,尤其是在国内外用户访问体验上的差距。希望这篇文章中的一些思路和方案能为你的站点加速之路提供帮助,让你的网站无论在国内还是国际都能有一个流畅的表现。

每日一图

图片来自哲风壁纸

夜景咖啡店