无论是互联网从业者还是科研人员,使用Github Page能够很友好的建立个人网站。
目前比较主流的方案是使用GitHub Page托管文字网页,利用GitHub仓库托管图床,稳定可靠(Gitee的page突然撤退,让人不敢再将图床放到上面,即使速度很快)。
然而,由于众所周知的原因,GitHub的访问在国内不是很流畅,限制策略主要是限流,所以大多数情况下文字网页都能够加载,但是存在GitHub图床上的图片无法加载,这时候利用CDN能够很好的解决这个问题。
原理:什么是CDN
什么是 CDN?
想象一下你在网上购物,找到了一件很喜欢的商品,但卖家在世界的另一端。商品需要经过漫长的运输,才能到达你的手中。这个过程可能需要几天甚至几周。可如果这个商品在你附近的仓库里有存货,那么你就可以很快地拿到它。这就是 CDN 的工作原理。(这不就是京东的库存管理模式嘛。。。)
CDN,全称 Content Delivery Network(内容分发网络),就像是一个全球化的仓库网络。它会把你网站的内容(比如图片、视频、网页文件)存放在离用户最近的服务器上。这样,当有人访问你的网站时,内容就会从最近的服务器发送到他们的设备上,而不是从一个遥远的服务器那里传输过来。
CDN 的好处
-
加速访问速度: 无论用户在哪个国家或地区,CDN 都会让他们从最近的服务器获取内容,减少等待时间。
-
提升网站稳定性: 如果某个服务器出现故障,CDN 会自动从其他服务器提供内容,不会影响用户的访问体验。
-
减少带宽消耗: 因为 CDN 服务器会缓存内容,减少了对源服务器的请求次数,从而降低了服务器的负担和带宽使用。
-
提高安全性: CDN 可以帮助抵御恶意攻击,比如分布式拒绝服务(DDoS)攻击,因为它能把流量分散到多个服务器,防止某个服务器因流量过大而崩溃。
为什么 CDN 能够绕过防火墙的限制?
CDN(内容分发网络)本身并不是为了绕过防火墙的限制而设计的,但在某些情况下,使用 CDN 可能会间接地改善访问体验,尤其是在跨境访问受限的网站时。以下是一些关键原因:
-
分布式网络架构:
CDN 的节点遍布全球,包括在国内的一些节点。通过 CDN,用户可以从距离自己最近的节点获取内容,而不是直接从海外服务器请求数据。这种方式减少了跨境流量,从而降低了被防火墙拦截或减速的风险。
-
CDN 域名的信誉:
大型 CDN 提供商如 Cloudflare、Akamai 等通常有良好的网络信誉,其域名和 IP 地址在国内外的访问通常不受限制。这意味着,即使某个源网站(如 GitHub)可能受到防火墙的管制,但通过 CDN 的加速域名,用户依然能够较为顺畅地访问其内容。
-
混淆流量来源:
当内容通过 CDN 分发时,访问请求不再直接指向原始服务器(如 GitHub 的服务器),而是通过 CDN 节点来提供内容。这种方式可以让流量看起来像是访问 CDN 提供商,而不是原始网站,可能会绕过某些网络限制。
为什么不使用 CDN 时,国内访问 GitHub 会很慢?
国内访问 GitHub 速度慢的原因主要与跨境流量受限和防火墙的控制有关:
-
跨境网络拥堵:
国内访问 GitHub 时,数据包需要经过国际出口,这些出口通常带宽有限,且高峰期容易拥堵,导致速度变慢。
-
防火墙的流量监控:
中国的防火墙(也称为"长城防火墙"或 GFW)会对特定的国际网站进行流量监控,甚至限制。这种监控可能包括对流量进行延迟、限制带宽或完全阻断,从而导致访问 GitHub 的速度非常慢。主要影响手段包括:IP 封锁、域名封锁、流量审查、关键词过滤等。
-
DNS 污染:
有时防火墙会通过 DNS 污染来阻止或干扰对 GitHub 等网站的访问,即返回错误的 IP 地址,导致无法连接或速度极慢。
准备工作
在开始使用 Cloudflare 加速自定义域名下的 PicGo 图床之前,我们需要准备以下几样东西:
-
一个 GitHub 仓库:
- 你需要一个 GitHub 仓库来存放通过 PicGo 上传的图片。如果你还没有仓库,可以在 GitHub 上免费创建一个。
-
PicGo 安装及配置:
- 下载并安装 PicGo,这是一款开源的图片上传工具,支持多种图床,包括 GitHub。
- 配置 PicGo,使其能够将图片上传到你的 GitHub 仓库。
-
一个自定义域名:
- 你需要一个已经注册的域名(如 example.com),并有权管理它的 DNS 设置。如果你还没有域名,可以通过域名注册商购买一个。
-
Cloudflare 账号:
- 你需要在 Cloudflare 上注册一个免费账号,用于管理你的自定义域名和设置 CDN 加速。
-
访问你域名的 DNS 设置的权限:
- 为了将你的域名接入 Cloudflare,你需要能够访问并修改域名的 DNS 设置(通常通过你的域名注册商的控制台)。
实际操作
1. 部署 PicGo 图床为网站
首先,我们需要将 PicGo 图床部署成一个网站。PicGo 是一个用于快速上传图片并生成外链的工具,它通常将图片上传至 GitHub 仓库中。
- 在 GitHub 上创建一个仓库,用于存放通过 PicGo 上传的图片。
- 配置 PicGo,使其将图片上传到该仓库,并生成图片链接。
接下来,我们使用 GitHub Pages 或其他静态网站托管服务,将这个仓库部署成一个网站。
2. 添加自定义域名
为了使用自己的域名访问这些图片,可以为这个网站添加一个自定义域名。步骤如下:
- 购买域名:如果还没有域名,可以通过域名注册商购买一个符合需求的域名。
- 配置 DNS :在域名注册商的控制台中,添加一条 CNAME 记录,将自定义域名指向 GitHub Pages 提供的地址(例如
yourusername.github.io
)。 - 配置 GitHub Pages:进入你的 GitHub 仓库设置页面,找到 GitHub Pages 部分,并设置自定义域名。
3. 使用 Cloudflare 代理域名
为了进一步加速访问速度,我们可以将自定义域名接入 Cloudflare,并利用其全球 CDN 网络进行加速。
- 注册并登录 Cloudflare :访问 Cloudflare 网站,注册并登录账号。
- 添加网站:在 Cloudflare 仪表盘中,点击"Add a Site",输入你的自定义域名,并跟随指示完成配置。
- 更新 DNS 服务器:根据 Cloudflare 的提示,将你的域名 DNS 服务器更新为 Cloudflare 提供的 DNS。
- 启用代理:在 Cloudflare 仪表盘中,确保你的自定义域名的 DNS 记录被 Cloudflare 代理(显示橙色云朵图标)。
- 配置 SSL:在 Cloudflare 的 SSL/TLS 设置中,选择"Full"模式,以确保访问时使用 HTTPS 加密。
4. 效果验证
完成以上配置后,所有通过自定义域名访问的图片资源将通过 Cloudflare 的 CDN 网络加速。这不仅能显著提升全球访问速度,还能提升网站的安全性和可靠性。
你可以使用浏览器开发者工具检查图片资源的加载时间,并验证 Cloudflare 是否已经成功代理了这些请求。你还可以利用 Cloudflare 仪表盘中的分析工具,监控流量和缓存的命中率。
总结
通过将 PicGo 图床部署成一个网站,并添加自定义域名,然后使用 Cloudflare 进行代理,我们可以显著提升图片的访问速度。这种方法不仅灵活,还能充分利用 Cloudflare 强大的 CDN 和安全功能,为用户提供更好的访问体验。
CDN 的力量在于它能加速内容传递,优化全球访问。无论你是在构建个人网站,还是部署企业应用,CDN 都是不可或缺的一部分。