打通最后一公里:使用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 都是不可或缺的一部分。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/143345.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

VCS和Verdi联合仿真使用学习记录

环境:linux 工具:vcs,verdi 最近学习如何在linux环境下使用vcs编译仿真,使用verdi查看波形。VCS 是 Synopsys 开发的一款高性能的 Verilog 和 SystemVerilog 编译仿真工具。它广泛用于数字电路设计和验证,特别是在 A…

javascript-代码执行原理

js 是解释型语言 js 引擎执行流程 分为两个阶段: 语法分析执行阶段执行阶段涉及的数据结构: 调用栈。处理执行上下文和执行代码内存堆。给对象分配内存任务队列。暂存待执行的任务,分为宏任务队列和微任务队列语法分析 词法分析 > 语法分析 > 代码生成(字节码) …

C++map,set,multiset,multimap详细介绍

目录 1. 关联式容器 2. 键值对 3. 树形结构的关联式容器 3.1 set set的介绍 set的使用 1. set的模板参数列表 2. set的构造 3. set的迭代器 4. set的容量 5. set的修改操作 6. set的使用举例 ​3.2 map map的介绍 map的使用 1. map的模板参数声明 2. map的构造 …

【数学分析笔记】第3章第2节 连续函数(4)

3. 函数极限与连续函数 3.2 连续函数 3.2.9 反函数的连续性定理 【定理3.2.2】【反函数连续性定理】设 y f ( x ) yf(x) yf(x)在闭区间 [ a , b ] [a,b] [a,b]上连续且严格单调增加,设 f ( a ) α , f ( b ) β f(a)\alpha,f(b)\beta f(a)α,f(b)β&#xff0…

iPhone 16系列:摄影艺术的全新演绎,探索影像新境界

在科技的浪潮中,智能手机摄影功能的进化从未停歇。 苹果公司即将推出的iPhone 16系列,以其卓越的相机升级和创新特性,再次站在了手机摄影的前沿。 从硬件到软件,从拍照体验到图像处理,iPhone 16系列都展现了其在移动…

通信工程学习:什么是PON无源光网络

PON:无源光网络 PON(Passive Optical Network,无源光纤网络)是一种采用光分路器等无源光器件进行信号传输和分配的光纤接入技术。它利用光纤作为传输媒介,通过无源设备将光信号从中心局(如光线路终端OLT&am…

工号不够用了怎么办? - 华为OD统一考试(E卷)

2024华为OD机试(E卷D卷)最新题库【超值优惠】Java/Python/C合集 题目描述 3020年,空间通信集团的员工人数数量突破20亿,现有工号系统不够用的窘境。 现在,请你负责调研新工号系统。继承历史传统,新工号系…

瑞芯微RK3588开发板Linux系统添加自启动命令的方法,深圳触觉智能Arm嵌入式鸿蒙硬件方案商

本文适用于触觉智能所有Linux系统的开发板、主板添加自启动命令的方法,本次使用了触觉智能的EVB3588开发板演示,搭载了瑞芯微RK3588旗舰芯片。 该开发板为核心板加底板设计,为工业场景设计研发的模块化产品,10年以上稳定供货,帮助…

Selenium实现滑动滑块验证码验证!

背景:在部分的登录中有滑动验证码的验证,由于滑动验证码的缺块是随机的就导致实现起来比较困难! 01、实现方案 模板匹配 通过openCV分析两个图片的相似度,获取两个相似度很高图片的坐标,从而计算两个图片的距离。 轮…

医学数据分析实训 项目九 糖尿病风险预测

文章目录 综合实践二 糖尿病遗传风险预测一、分析目标二、实现步骤三、数据准备四、特征工程五、模型构建六、性能度量七、提交要求 综合实践任务二 糖尿病遗传风险预测代码(一)数据准备(二)特征工程(三)模…

云原生(Cloud Native)简介及相关技术

云原生(Cloud Native)简介及相关技术 什么是云原生? 云原生(Cloud Native)是一种设计和开发应用程序的方法,旨在充分利用云计算的弹性、可扩展性和分布式架构优势。通过采用微服务架构、容器化、持续集成…

vscode软件在 C发中常用插件

一. 简介 本文简单介绍一下,当做 C开发时 vscode软件常用的插件。 vscode软件是 微软公司目前提供的一款免费的开发软件,可以通过 vscode官网下载 vscode。 二. vscode软件在 C开发中常用插件 注意:vscode软件安装后,可以直接…

【Canvas与诗词】《登科后》唐.孟郊

【成图】 【代码】 <!DOCTYPE html> <html lang"utf-8"> <meta http-equiv"Content-Type" content"text/html; charsetutf-8"/> <head><title>昔日龌龊不足夸</title><style type"text/css"&g…

算法知识点———并查集

并查集是一种用于管理元素所属集合的数据结构&#xff0c;实现为一个森林&#xff0c;其中每棵树表示一个集合&#xff0c;树中的节点表示对应集合中的元素。并查集支持两种操作&#xff1a; 合并&#xff08;Union&#xff09;&#xff1a;合并两个元素所属集合&#xff08;合…

OpenAI o1碎片化过程中探索与利用的泛化

在上一篇《OpenAI o1&#xff1a;隐含在训练与推理间的动态泛化与流形分布》笔记里尝试剖析OpenAI o1内部机理的过程中我们将目光聚焦在了「模型从训练到推理两个阶段的动态渐进与平衡」之上&#xff0c;并将其等价于对long reasoning chain&#xff08;长程推理链&步骤&am…

【重学 MySQL】三十四、加密与解密函数

【重学 MySQL】三十四、加密与解密函数 在 MySQL 中&#xff0c;加密与解密函数是保护数据安全的重要手段&#xff0c;它们允许开发者在存储和传输敏感数据时保持数据的保密性。 函数名描述返回值类型备注AES_ENCRYPT(str, key_str)使用 AES 算法加密字符串BLOB返回加密后的二…

梯度的定义是什么?一阶梯度、二阶梯度对应的优化器是什么?

梯度 梯度的定义一阶梯度、二阶梯度对应的优化器 梯度的定义 梯度的定义主要出现在多元函数的微分学中&#xff0c;是一个向量场&#xff0c;表示某一函数在该点处的方向导数沿着该方向取得最大值&#xff0c;即函数在该点处沿着该方向&#xff08;此梯度的方向&#xff09;变…

好用的网页翻译插件

软件介绍 「火山翻译&#xff0c;开箱即用免配置&#xff0c;完全免费无广告&#xff0c;开发的多语言翻译插件&#xff0c;基本涵盖众多小语种及国际通用语言的翻译&#xff0c;支持网页一键翻译、划词翻译、英语词典、生词本、吐司弹词记忆等丰富能力。 下载方式 请看文章…

Red Hat 和 Debian Linux 对比

原图的作者(https://bbs.deepin.org/post/209759) Red Hat Enterprise Linux https://www.redhat.com/ CentOS Linux https://www.centos.org/ Fedora Linux https://fedoraproject.org/ Debian https://www.debian.org/ Ubuntu https://cn.ubuntu.com/ https://ubuntu.c…

Python “字符串操作” ——Python面试100道实战题目练习,巩固知识、检查技术、成功就业

本文主要是作为Python中列表的一些题目&#xff0c;方便学习完Python的元组之后进行一些知识检验&#xff0c;感兴趣的小伙伴可以试一试&#xff0c;含选择题、判断题、实战题、填空题&#xff0c;答案在第五章。 在做题之前可以先学习或者温习一下Python的列表&#xff0c;推荐…