当前位置: 首页 > 编程日记 > 正文

CDN的原理及对SEO的影响

http://www.williamlong.info/archives/4059.html

CDN的概念最早于1995年由美国麻省理工大学提出,是一套能够实现用户就近访问的网络解决方案。具体方法是:采用智能路由和流量管理技术,将用户的访问请求指向 CDN网络中健康且响应最快的CDN节点,用户通过直接对此CDN节点的访问,获得所需要的内容和数据,就近访问加速了访问速度。

利用内容分发与复制机制,客户不需要改动原来的网站结构,只需修改少量的DNS配置,就可以加速网络的响应速度。 当用户访问使用CDN服务的网站时,解析请求将最终由CDN服务商提供的DNS域名解析服务器来处理。它通过将当时能够最快响应用户的节点地址提供给用户,使用户可以有效准确的得到快速的服务。同时,它还与分布在不同地点的所有CDN节点保持是实时通信,搜集各节点的健康状态,确保用户访问的成功率。

上面的说明有些专业,用户访问网站实际上就是用户的电脑寻找网站服务器的一个过程。先让我们看一下使用CDN服务之前,用户访问网站的流程:

1.用户在自己的浏览器中输入要访问的网站的域名,浏览器首先查看本机系统目录下的一个hosts文件。该文件位于WINDOWS\system32\drivers\etc下,没有扩展名,但是可以用记事本打开。里面一行对应着域名和IP值。如果有域名对应的IP,浏览器直接就用该IP访问网站。

2.如果没有域名对应的IP地址,浏览器向本地DNS服务器请求对该域名的解析; 本地DNS服务器就是由当地电信或者联通给分配的DNS.

3.本地DNS服务器到根DNS服务器上找所授权的DNS记录,记录返回到本地DNS服务器;

4.本地DNS服务器按照记录到网站授权的域名解析服务器请求解析主机名,域名解析服务器将IP地址作为解析结果送给本地DNS服务器。

5.本地DNS服务器将IP返还给用户;

6.用户在得到IP地址后,向该网站服务器进行访问,网站服务器将相应的内容和数据提供给用户。

使用CDN服务之后,用户访问流程:

前三步流程相同,从第四步开始:

1.域名的解析请求在被发往CDN解析服务器后,服务器将此域名响应速度最快的节点IP发送给本地DNS服务器,本地DNS服务器将此IP发给用户。上图的第四、五步。

2.用户在得到IP地址后向CDN节点发出访问请求第一次的访问。

3.CDN节点将回源网站服务器取回内容数据发给用户。

4.CDN节点会缓存大量数据,若有其他用户访问相同内容时,直接将内容数据返回用户,完成从请求到服务的全过程。

目前CDN服务的厂家大部分是收费的,提供免费CDN服务厂家不多,随着这类产品的增多,厂家之间相互竞争也将逐渐激烈,服务内容、服务项目、服务质量也会随之更上层楼!所以,相信会有更多、更好的免费CDN的出现。

OK,上面说完了CDN的原理,现在我们再分析一下采用CDN服务对SEO(搜索引擎优化)有没有影响,因为对CDN技术实现并不是完全了解,所以只是猜测一下几种情况:

1.首先要了解蜘蛛是怎样爬过来的,抓取源服务器数据的。

对于已经收录的网站,蜘蛛肯定是直接抓取源服务器IP地址的数据,不大可能每次抓取前再重新通过DNS服务器解析一次,所以我们不用担心更新的数据会不会被抓取到。

2.CDN节点缓存的更新频率。

如果蜘蛛抓取的是CDN节点里面的数据,这里面数据都是存放在CDN缓存里面的,CDN既然是一种缓存技术,那么它的实时性肯定是无法实现的,因此它的更新频率就很重要了。在写这篇文章的时候,我打电话咨询了国内最大CDN服务商网宿科技的客服,客服的说法是会根据访问量及访问行为自动的设定更新频率,也可以在后台根据网站不同的栏目设定灵活多样的缓存策略和主、被动的数据更新方式;并进行智能调控和缓存。所以,这里对于SEO的影响也是可以忽略的。

3.IP的变化对SEO的权重。

万一蜘蛛抓取到各个节点的数据呢?会不会造成一个网站好像有不同的IP地址,搜索引擎会不会对这种情况有所惩罚呢?查看百度官方SEO指南 可以看到这样的话:“Baiduspider对站点的抓取方式和普通用户访问一样,只要普通用户能访问到的内容,我们就能抓取到。不管是用什么技术,只要能保证用户能流畅的访问网站,对搜索引擎就没有影响。” 既然百度都这样说,谷歌对于抓取和收录更没有问题。同时,百度也提到“建议尽量选择有实力的服务商和成熟的技术,不成熟的技术容易导致访问不稳定,这就有可能影响搜索引擎的抓取了”,所以选择一个安全,稳定的CDN服务提供商仍然是很重要的。

CDN对SEO的影响是很多朋友都关心的问题,从网友的一些实验来看,无论是从抓取速度和频率来说都没有什么问题,甚至是有益的。另外即使存在一些问题,搜索引擎以及CDN提供商应该会想到解决的办法。

转载于:https://www.cnblogs.com/jukan/p/5674239.html

相关文章:

JavaScript学习笔记 - 入门篇(1)- 准备

为什么学习JavaScript 一、你知道,为什么JavaScript非常值得我们学习吗? 所有主流浏览器都支持JavaScript。目前,全世界大部分网页都使用JavaScript。它可以让网页呈现各种动态效果。做为一个Web开发师,如果你想提供漂亮的网页、令…

iOS关于像素的适配

项目中很多地方会用到分割线, 一般设置为1.0, 但是在不同的机型上这个1.0显示的效果是不同的,1x的机型上正常, 2x和3x的机型上显示的就会很粗, 影响适配, 困扰很久后得到了以下解决办法, 在此记录一下: 1.0/UIScreen.mainScreen.scale

非对称加密中公钥

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 数字签名是公钥密码体系中签名验证功能的一个应用。其目的是保证信息传输的完整性、发送者的身份认证、防止交易中的抵赖发生。其中数字签名是个加密…

bzoj 4813: [Cqoi2017]小Q的棋盘【树形dp】

这么简单的dp我怎么没想到x2 f为从这个点出发后回到这个点最多能走过的点,g为从这个点出发后不回到这个点最多能走过的点,注意g有两种转移:g[u][k]max(g[u][k],f[u][k-j-1]g[e[i].to][j])是在e[i].to这个子树前走了一棵子树再回来&#xff0c…

spring WebServiceTemplate 调用 axis1.4 发布的webservice

前言: 最近在开发中需要调用对方的 webservice服务,按照现有的技术,本应该是一件很简单的事情,只需要拿到wsdl文件,生成客户端代码即可,但是,对方的webservice服务是06年用axis1.4生成发布的&am…

iOS 获取Assets中的启动页

app启动时先进入一个广告页, 若无广告图则用启动页占位, 一直为这个占位图的适配烦恼, 最近查资料终于找到了结果, 现记录一下: - (UIImage *)getLaunchImage { CGSize viewSize [UIScreen mainScreen].bounds.size; NSString *viewOrientation "Portrait";//方向…

SunlightChain 区块链宣言

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 SunlightChain 区块链宣言 区块链技术的应用必将颠覆现在过度依赖于中心的经济模式,它与生俱来的开放、共享、去中心化等特点极大地提高…

Ajax跨域:Jsonp原理解析

推荐先看下这篇文章:JS跨域(ajax跨域、iframe跨域)解决方法及原理详解(jsonp) JavaScript是一种在Web开发中经常使用的前端动态脚本技术。在JavaScript中,有一个很重要的安全性限制,被称为“Sam…

iOS 微信SDK1.8.6后需要UniversalLink解决方案及采坑记录

项目最初因审核原因,一直使用iOS原生分享, 最近因项目需求要求, 接入微信分享, 以为和原来的没有区别, 但是接入时才发现改动的地方还是挺多的, 主要是需要配置UniversalLink和提包时的一些问题, 在此做一下记录 UniversalLink配置步骤 1.制作apple-app-site-association文件…

GO语言编程基础-复合类型结构体

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 1 结构体类型 有时我们需要将不同类型的数据组合成一个有机的整体,如:一个学生有学号/姓名/性别/年龄/地址等属性。显然单独…

【BZOJ1015】【JSOI2008】星球大战 并查集

题目大意 给你一张\(n\)个点\(m\)条边的无向图,有\(q\)次操作,每次删掉一个点以及和这个点相邻的边,求最开始和每次删完点后的连通块个数。 \(q\leq n\leq 400000,m\leq 200000\) 题解 我们可以用并查集维护连通块个数,可惜并查集…

python基于Django框架编译报错“django.core.exceptions.ImproperlyConfigured”的解决办法?...

下面是我具体遇到的问题和解决方法: 错误详细信息: django.core.exceptions.ImproperlyConfigured: Requested setting DEFAULT_INDEX_TABLESPACE, but settings are not configured. You must either define the environment variable DJANGO_SETTINGS_…

iOS 异形tabBar, 中间item凸起

今年的新项目中做了tabbar的相关处理, 在此记录一下 自己做了一demo, 效果如图所示 demo地址如下: https://github.com/wyon1314/TabBarDemo

以太坊系统账户

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 在以太坊系统中,状态是由被称为“账户”(每个账户由一个20字节的地址)的对象和在两个账户之间转移价值和信息的状…

Django-缓存的配置

缓存的介绍 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面.当一个网站的用户访问量很大的时候,每一次的的后台操作,都会消耗很多的服务端资源,所以必须使用缓存来减轻后端服务器的压力.缓存是将一些常…

swift中单例的创建及销毁

最近项目重构时使用了oc和swift的混编,遇到了关于单例的创建及销毁,这里记录一下 //创建单例private static var _sharedInstance: ViewController?objc class func sharedInstance() -> ViewController {guard let instance _sharedInstance else …

区块链技术名词简介

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 零知识证明 零知识证明指证明者能在不向验证者提供任何有用的信息下,使验证者相信某个论断是正确的。零知识证明实质是一种涉及两方或更…

Linux篇---ftp服务器的搭建

一、前述 企业中linux搭建ftp服务器还是很实用的,所以本文针对centoos7和centoos6搭建服务器教程做个总结。 二、具体 1、显示如下图则表示已安装 vsftp软件。如果未显示则需要安装vsftpd软件。 如果没有则通过yarm源进行安装 yum install -y vsftpd 2、安装完成之后…

Python 的property的实现 .

描述符.就是 将某种特殊类型①的类的实例指派给另一个类的属性 ①只要实现一下三种方法的其中一个就是特殊类型. __get__(self,instance,owner) -用于访问属性,他返回属性的值. __set__(self,instance,value) -将在属性分配操作时使用,不返回任何内容. __delete__(self,instanc…

Swift中NSRange和Range的转换

最近项目再使用swift重构,遇到Range和NSRange转换的问题,这里记录下: 因为要使用NSRange,所以有了下面这段代码,将String转换为NSString后调用 range(of searchString: String) -> NSRange 这种处理方法其实就是使…

C++基础技术简介

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 容器 容器用于存储数据元素,是由长度可变的同类型的元素构建成的序列。 Vector:用于快速定位任意元素及主要在元素序列的尾…

eclipse快捷键操作

【Ct rlT】 搜索当前接口的实现类 1. 【ALT /】 此快捷键为用户编辑的好帮手,能为用户提供内容的辅助,不要为记不全方法和属性名称犯愁,当记不全类、方法和属性的名字时,多体验一下【ALT /】快捷键带来的好处吧。 2. 【Ct rlO】…

vue 项目配置sass

1.运行npm install node-sass --save-dev npm install sass-loader --save-dev 2.打开build文件夹下面的webpack.base.config.js module: {rules: [...(config.dev.useEslint ? [createLintingRule()] : []),{test: /\.scss$/,loaders: ["style", "css", …

获取App Store中App的ipa包

俗话说好记性不如烂笔头,每次需要看别的App中某些功能的实现方案时总去查资料太麻烦,所以这里记录下如何获取App Store中App的ipa包 主要使用的工具为Apple Configurator 2这款软件: 具体操作流程如下: 1.首先在iPhone设备上安装…

区块链中的技术

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 应用技术 算法加密1 比特币采用椭圆曲线加密算法(ECC)来产生公钥和私钥对,钱包地址即是公钥,私钥由…

h.264 FMO

在H.264之前的标准中,比如H.263,其比特流中的数据是按照一个宏块接一个宏块的方式排列的,一旦发生丢包,很多相邻宏块信息都会丢失,很难进行错误隐藏处理。在H.264中加入了一项新特性:把宏块在比特流中的数据…

lvs+keepalived+nginx+tomcat

# 拓扑如下所示 # 节点分布情况 LVS-dr-master eth0: 192.168.146.141 LVS-dr-slave eth0: 192.168.146.142 nginx1: eth0: 192.168.146.139 nginx2: eth0: 192.168.146.140 tomcat1: eth0: 192.168.146.138 启用了4个tomcat VIP: 192.168.146.200 # 具体配置 ### lvs master #…

iOS 关于pods-frameworks.sh:permission denied报错的解决

最近公司新开项目,搭建完框架后小伙伴拉取代码后build一直报错:pods-frameworks.sh:permission denied 查了很多博文后找到了如下解决方案,在此记录。 打开终端输入如下命令行回车即可: chmod ax "/Users/xxx/Pods/Pods-re…

区块链分布式账本

链客,专为开发者而生,有问必答! 此文章来自区块链技术社区,未经允许拒绝转载。 账本是具有一定格式和许多账页组成的,以会计凭证为基础,对经济业务进行序时分类记录,也就是所说的账册。 账本在…

jmeter实现多并发

1.jmeter实现多并发 线程组:负载发生器,用以多线程或多进程的方式来模拟用户的使用行为.jmeter是以线程的方式来进行模拟用户的并发访问的 转载于:https://www.cnblogs.com/xuzhongtao/p/8526502.html