打通最后一公里:使用CDN加速GitHub Page的访问

无论是互联网从业者还是科研人员,使用Github Page能够很友好的建立个人网站。

目前比较主流的方案是使用GitHub Page托管文字网页,利用GitHub仓库托管图床,稳定可靠(Gitee的page突然撤退,让人不敢再将图床放到上面,即使速度很快)。

然而,由于众所周知的原因,GitHub的访问在国内不是很流畅,限制策略主要是限流,所以大多数情况下文字网页都能够加载,但是存在GitHub图床上的图片无法加载,这时候利用CDN能够很好的解决这个问题。

原理:什么是CDN

大白话图解:什么是 CDN

什么是 CDN?

想象一下你在网上购物,找到了一件很喜欢的商品,但卖家在世界的另一端。商品需要经过漫长的运输,才能到达你的手中。这个过程可能需要几天甚至几周。可如果这个商品在你附近的仓库里有存货,那么你就可以很快地拿到它。这就是 CDN 的工作原理。(这不就是京东的库存管理模式嘛。。。)

CDN,全称 Content Delivery Network(内容分发网络),就像是一个全球化的仓库网络。它会把你网站的内容(比如图片、视频、网页文件)存放在离用户最近的服务器上。这样,当有人访问你的网站时,内容就会从最近的服务器发送到他们的设备上,而不是从一个遥远的服务器那里传输过来。

CDN 的好处

  1. 加速访问速度: 无论用户在哪个国家或地区,CDN 都会让他们从最近的服务器获取内容,减少等待时间。

  2. 提升网站稳定性: 如果某个服务器出现故障,CDN 会自动从其他服务器提供内容,不会影响用户的访问体验。

  3. 减少带宽消耗: 因为 CDN 服务器会缓存内容,减少了对源服务器的请求次数,从而降低了服务器的负担和带宽使用。

  4. 提高安全性: CDN 可以帮助抵御恶意攻击,比如分布式拒绝服务(DDoS)攻击,因为它能把流量分散到多个服务器,防止某个服务器因流量过大而崩溃。

为什么 CDN 能够绕过防火墙的限制?

CDN(内容分发网络)本身并不是为了绕过防火墙的限制而设计的,但在某些情况下,使用 CDN 可能会间接地改善访问体验,尤其是在跨境访问受限的网站时。以下是一些关键原因:

  1. 分布式网络架构:

    CDN 的节点遍布全球,包括在国内的一些节点。通过 CDN,用户可以从距离自己最近的节点获取内容,而不是直接从海外服务器请求数据。这种方式减少了跨境流量,从而降低了被防火墙拦截或减速的风险。

  2. CDN 域名的信誉:

    大型 CDN 提供商如 Cloudflare、Akamai 等通常有良好的网络信誉,其域名和 IP 地址在国内外的访问通常不受限制。这意味着,即使某个源网站(如 GitHub)可能受到防火墙的管制,但通过 CDN 的加速域名,用户依然能够较为顺畅地访问其内容。

  3. 混淆流量来源:

    当内容通过 CDN 分发时,访问请求不再直接指向原始服务器(如 GitHub 的服务器),而是通过 CDN 节点来提供内容。这种方式可以让流量看起来像是访问 CDN 提供商,而不是原始网站,可能会绕过某些网络限制。

为什么不使用 CDN 时,国内访问 GitHub 会很慢?

国内访问 GitHub 速度慢的原因主要与跨境流量受限和防火墙的控制有关:

  1. 跨境网络拥堵:

    国内访问 GitHub 时,数据包需要经过国际出口,这些出口通常带宽有限,且高峰期容易拥堵,导致速度变慢。

  2. 防火墙的流量监控:

    中国的防火墙(也称为"长城防火墙"或 GFW)会对特定的国际网站进行流量监控,甚至限制。这种监控可能包括对流量进行延迟、限制带宽或完全阻断,从而导致访问 GitHub 的速度非常慢。主要影响手段包括:IP 封锁、域名封锁、流量审查、关键词过滤等。

  3. DNS 污染:

    有时防火墙会通过 DNS 污染来阻止或干扰对 GitHub 等网站的访问,即返回错误的 IP 地址,导致无法连接或速度极慢。

准备工作

在开始使用 Cloudflare 加速自定义域名下的 PicGo 图床之前,我们需要准备以下几样东西:

  1. 一个 GitHub 仓库

    • 你需要一个 GitHub 仓库来存放通过 PicGo 上传的图片。如果你还没有仓库,可以在 GitHub 上免费创建一个。
  2. PicGo 安装及配置

    • 下载并安装 PicGo,这是一款开源的图片上传工具,支持多种图床,包括 GitHub。
    • 配置 PicGo,使其能够将图片上传到你的 GitHub 仓库。
  3. 一个自定义域名

    • 你需要一个已经注册的域名(如 example.com),并有权管理它的 DNS 设置。如果你还没有域名,可以通过域名注册商购买一个。
  4. Cloudflare 账号

    • 你需要在 Cloudflare 上注册一个免费账号,用于管理你的自定义域名和设置 CDN 加速。
  5. 访问你域名的 DNS 设置的权限

    • 为了将你的域名接入 Cloudflare,你需要能够访问并修改域名的 DNS 设置(通常通过你的域名注册商的控制台)。

实际操作

1. 部署 PicGo 图床为网站

首先,我们需要将 PicGo 图床部署成一个网站。PicGo 是一个用于快速上传图片并生成外链的工具,它通常将图片上传至 GitHub 仓库中。

  • 在 GitHub 上创建一个仓库,用于存放通过 PicGo 上传的图片。
  • 配置 PicGo,使其将图片上传到该仓库,并生成图片链接。

接下来,我们使用 GitHub Pages 或其他静态网站托管服务,将这个仓库部署成一个网站。

2. 添加自定义域名

为了使用自己的域名访问这些图片,可以为这个网站添加一个自定义域名。步骤如下:

  1. 购买域名:如果还没有域名,可以通过域名注册商购买一个符合需求的域名。
  2. 配置 DNS :在域名注册商的控制台中,添加一条 CNAME 记录,将自定义域名指向 GitHub Pages 提供的地址(例如 yourusername.github.io)。
  3. 配置 GitHub Pages:进入你的 GitHub 仓库设置页面,找到 GitHub Pages 部分,并设置自定义域名。

3. 使用 Cloudflare 代理域名

为了进一步加速访问速度,我们可以将自定义域名接入 Cloudflare,并利用其全球 CDN 网络进行加速。

  1. 注册并登录 Cloudflare :访问 Cloudflare 网站,注册并登录账号。
  2. 添加网站:在 Cloudflare 仪表盘中,点击"Add a Site",输入你的自定义域名,并跟随指示完成配置。
  3. 更新 DNS 服务器:根据 Cloudflare 的提示,将你的域名 DNS 服务器更新为 Cloudflare 提供的 DNS。
  4. 启用代理:在 Cloudflare 仪表盘中,确保你的自定义域名的 DNS 记录被 Cloudflare 代理(显示橙色云朵图标)。
  5. 配置 SSL:在 Cloudflare 的 SSL/TLS 设置中,选择"Full"模式,以确保访问时使用 HTTPS 加密。

4. 效果验证

完成以上配置后,所有通过自定义域名访问的图片资源将通过 Cloudflare 的 CDN 网络加速。这不仅能显著提升全球访问速度,还能提升网站的安全性和可靠性。

你可以使用浏览器开发者工具检查图片资源的加载时间,并验证 Cloudflare 是否已经成功代理了这些请求。你还可以利用 Cloudflare 仪表盘中的分析工具,监控流量和缓存的命中率。

总结

通过将 PicGo 图床部署成一个网站,并添加自定义域名,然后使用 Cloudflare 进行代理,我们可以显著提升图片的访问速度。这种方法不仅灵活,还能充分利用 Cloudflare 强大的 CDN 和安全功能,为用户提供更好的访问体验。

CDN 的力量在于它能加速内容传递,优化全球访问。无论你是在构建个人网站,还是部署企业应用,CDN 都是不可或缺的一部分。

相关推荐
用户3157476081357 小时前
成为程序员的必经之路” Git “,你学会了吗?
面试·github·全栈
墨染8668 小时前
HP G10服务器ESXI6.7告警提示ramdisk tmp已满
github
油泼辣子多加10 小时前
2024年11月13日Github流行趋势
github
叫我龙翔10 小时前
【项目日记】仿mudou的高并发服务器 --- 整体框架搭建 ,实现时间轮模块
运维·服务器·网络·c++·github
不是鱼12 小时前
新人程序猿必备的git技能(超实用基础版)
git·github
Srlua13 小时前
从创建 GitHub 项目到推送代码:Git 命令行操作全流程
github·gittee
cui_win16 小时前
Redis高可用-主从复制
redis·git·github·主从复制·哨兵
用户24048170962119 小时前
Git 使用指南:版本控制与团队协作的艺术
github
学习路上_write19 小时前
FPGA/Verilog,Quartus环境下if-else语句和case语句RT视图对比/学习记录
单片机·嵌入式硬件·qt·学习·fpga开发·github·硬件工程
谎言西西里19 小时前
Git入门指南:掌握基本概念与日常操作
git·github