CDN部署笔记

开通并部署了CDN,记录一些过程中遇到的问题和解决方法。

CDN部署笔记

1 CDN

1.1 概念

内容分发网络(Content Delivery Network),是在现有 Internet 中增加一层新的网络架构,由遍布全国的高性能加速节点构成。

1.2 原理及作用

加速原理

这些高性能的服务节点都会按照一定的缓存策略存储您的业务内容,当您的用户向您的某一业务内容发起请求时,请求会被调度至最接近用户的服务节点,直接由服务节点直接快速响应,有效降低用户访问延迟,提升可用性。

CDN 有效的解决了目前互联网业务中网络层面的以下问题:

  1. 用户与业务服务器地域间物理距离较远,需要进行多次网络转发,传输延时较高且不稳定;
  2. 用户使用运营商与业务服务器所在运营商不同,请求需要运营商之间进行互联转发;
  3. 业务服务器网络带宽、处理能力有限,当接收到海量用户请求时,会导致响应速度降低、可用性降低。

详细介绍:内容分发网络 - 腾讯云


2 问题笔记

2.1 DNS配置

  1. 在CDN中配置主域名后,会获得一个CDN域名;
  2. 在DNS中删去主域名原来的解析记录,设置新的CNAME域名解析记录,将主域名解析到CDN域名上;
  3. 配置CDN缓存策略,并开启CDN并刷新本地域名解析,Windows CMD执行ipconfig/flushdns
  4. 打开主域名

2.2 强制使用HTTPS

  1. 在CDN配置中设置好HTTPS证书,因为用户的HTTPS链接将是用户和CDN服务器的连接。
  2. 设置回源访问时,设置为HTTPS回源为宜(特别是如果你的站点有登录页面等)
    1. 否则可能会出现浏览器拒绝加载js, css资源

2.3 出现浏览器提示"过多重定向",无法打开

我这里的问题经分析,是出在回源访问时的重定向上。

具体而言,就是站点在CDN上设置了默认HTTPS,而CDN回源时设置了HTTP回源,而源服务器处设置了地址重写,将HTTP访问重定向到HTTPS,这就导致CDN回源访问时,所有的HTTP都被重定向到了HTTPS(加载html, js, css等资源),导致浏览器提示过多的重定向,拒绝加载。

2.4 只有html页面,没有样式、插件和图片

jscss等被浏览器拒绝加载导致,通常是CDN中没有缓存,而加载链接是HTTP回源,且源站设置了地址重写导致。

需要统一使用HTTP或HTTPS,不要出现混合使用的情况。

2.5 CDN缓存策略

如果默认配置了所有文件缓存30天,php, jsp, asp缓存0秒,会缓存所有0秒/分/时/天以外的数据,这就意味着你的HTML页面更新后,CDN处要首次缓存的30天后才会更新,这显然是不行的。

我的理解是——

一、CDN主要用于缓存不常修改的数据,如:

  • 网站样式、javascript插件——css, js
  • 图片资源——png, jpg, bmp, ico
  • 这类资源的缓存寿命可以配置的比较长,如:30天,以减少回源访问,提高CDN命中率;

二、而经常更新的,实时的资源不应该被长期缓存,如:

  • 文章、页面、动态信息——html, php
  • 首页;
  • 后台管理页面;
  • 这类资源的缓存寿命应该配置得较短,直接回源就配置0秒,和源站保持一致性,访问量大就配置成较短的时间,如秒/分/时的级别。