当今世界,对所有人而言,网站必须具有一切功能:网站必须有吸引力、速度快、有灵活性及可移动性,甚至必须要能够不断变化。此外,还必须支持频繁的会话、支持各种浏览器、智能手机、平板电脑以及其它
用户可能会用到的设备。\x0d\x0a网站必须能够在复杂的网络环境下运行,比如中国、亚洲、中东等网络连接很差的区域或国家,这些地方不仅地理位置分散,距离遥远而且网络多样化。更不必说,对于移动站点或应用程序而言,不仅有线连接如DSL或电缆线甚至无线连接如GPRS、EDGE、3G及现在的LTE等,都必须有很高的连接性能,然而即使是这些提供连接服务的供应商都可能不会有很好的网络连接。\x0d\x0a此外,站点使用越来越多的对象,如图片、帧、CSS及APIs,比如AJAX,以及远程调用,比如从Facebook调用到Google,甚至使用各种各样的共享、跟踪及附加值系统等。\x0d\x0a难怪,系统变得越来越慢,用户只访问能够最快打开、性能最好的网站。Google及其它网站的研究表明,一个网站每慢一秒钟,就会丢失许多访客,甚至这些访客永远不会再次光顾这些网站。\x0d\x0a输入CDN或是
内容分发网络,你就会搜索到国际公司如Akamai及Limelight,及中国公司如ChinaCache及ChinaNetCenter,他们可以帮助用户提高网站浏览性能,如浏览互联网站、网络游戏网站及应用程序。\x0d\x0aCDN支持许多种服务,最常用的服务有:\x0d\x0a下载_下载服务是CDN提供的最简单的服务,通常是一些终端用户,如网游用户、软件用户、程序开发员及要下载大量文件的用户会使用到。通过使用CDN,人们便无需使用高带宽连接到昂贵的数据中心,并且通过CDN节点,这些文件会放到离终端用户更近的地方。\x0d\x0a静态文件/图片_CDN最常用的用途是用来给终端用户发布静态文件,如图片、java脚本、css文件等。通常这些类型的文件很少变更,即便有变更,也是少量的,所以,把文件发布并存放到离终端用户比较近的地方会极大地提高网站速度,在地理位置分散或连接性能很差的地方,网站速度提高会显得更加明显。请注意,该服务仅仅用于处理静态文件,如主要的网站页面,所有动态内容,都是由主网站服务器提供。这通常是分开处理的,通过不同的子域名进行处理,如images.mydomain.com,与www.是分开的。\x0d\x0aWSA_即整体网站加速,正变得越来越流行。从名称便可知道,它是用来加速整个网站的,包括所有的静态的东西及动态的东西,如网页、购物车及推荐信息等。基本情况是,终端用户只连接到CDN,CDN连接到网站,然后
缓存所有的东西,CDN代表用户向实体的网站后台发送请求,获取动态数据。\x0d\x0a当然,CDN只能改善一部分内容的访问速度,因为其它的内容,如采购历史、产品库存等必须直接从后台网站获得。对于连接性很差的网络,如移动网络以及复杂的难以将静态内容从静态CDN分离出来的网站来说,WSA尤为好用。注意,为确保WSA成功,谨慎的配置及缓存控制头信息是非常重要的,因为CDN需要知道要缓存哪些东西,以及哪些东西是要传递到后台的。\x0d\x0a流媒体内容-媒体类网站使用越来越多的流媒体内容,如视频,包括来自于其它网站(如Netflix、Hulu、或Youtube及中国的Tudou/Youku)的实际的电视节目、影片等。对于这些内容而言,CDN提供特别的下载服务,通常称之为点播或Vod,可以处理并控制所有视频,包括快进/后退视频,可以访问经过授权的内容,提供各种跟踪服务等。对于这些服务而言,视频通常是加载到CDN,并且通过特定的URL直接提供视频。此外,一些CDN还提供现场流体内容,如,体育或其它事件等实时播放,进行现场内容直播。\x0d\x0a其它-CDN有许多其它功能及服务,以满足特殊需求,如电商、预加载、网游、动态加速、安全及DRM控制等。此外,还提供特殊的满足地理要求或网络要求(如中国移动或CERNET)的特别服务。\x0d\x0aCDN还有一个服务容易被人忽略,就是安全服务。例如,许多CDN可提供防DDoS攻击服务,由于它们比任何一个网站的带宽都大,而且分散,所以能够经受住此类攻击。此外,一些专门的CDN如,CloudFlare及AnQuanBao也提供像防火墙一样的应用程序,如防止SQL注入攻击、XSS攻击及其它防攻击手段以保护后台站点。\x0d\x0a另一个特别的主要服务就是“内容感知”网络服务。这是一种新新服务,是通过CDN系统的更智能化管理的内容,可以给不同用户,如移动或DSL或办公室用户等提供不同的优化过的内容。它可以对内容进行处理,以便提供给不同设备,也可以对内容进行优化,以便将最重要的内容优先下载下来,使用户获得最佳体验。它们还会判断在哪个地方存放哪些内容,总之,该系统能够使网站在复杂的互联网环境下有良好的性能表现。\x0d\x0a最后,有些CDN还提供全球服务,帮助客户开拓新区域或国际区域,如中国、拉美或国外其它地区。对于全球品牌而言,这种服务非常重要,对于想要获得国际客户的中国公司而言,这种服务也非常重要。这种全球或局部CDN帮助人们在无需数据中心及特别带宽等情形下,便可获得庞大的用户群。\x0d\x0a根据您的需求及站点架构,使用CDN是非常容易的。对于静态/图片CDN而言,关键的一点在于能够将静态内容或图片分离到特定的域名,然后存放到同一服务器上不同的虚拟机上。\x0d\x0a要想使用好CDN,最关键的一点还在于能够有良好的缓存控制。这样,CDN能够知道缓存哪些对象以及要缓存多长时间。理想的情况是,像图片这些东西基本很少发生变化,若有更新的话,应该将文件名/URL更改掉并且HTML变更到指向新的对象。有时候,要进行这些更改并不容易,因为必须在源主机进行更新,这就要求短时间的(1个小时或1天)缓存这些东西,或者使这些在CDN缓存中失效。\x0d\x0a对于任何网站而言,最好的做法也许是将两种方法结合使用,也就是使用CDN来处理静态HTML页面,使用AJAX处理动态数据。这样便可以从后台系统提供服务数据,给用户快速提供动态数据,使用户有良好的体验。\x0d\x0a监控_要想很好地跟踪CDN的运行情况,就必须使用监控工具,如Gomez、ip-label或NetworkBench。它们可以帮助您监控CDN的实际性能,这一点可以从不同的网络及终端用户的使用情况中得到证实。并且,这样做有助于识别并发现问题,确保CDN服务能按照所期望的运作。\x0d\x0a总之,几乎每个人都应该使用CDN,尤其是现在的世界生活节奏快、充满活力、要求又很苛刻,所以人们更应当使用CDN。
CDN指的是内容分发网络。
CDN是指一种透过互联网互相连接的电脑网络系统,利用最靠近每位用户的服务器,更快、更可靠地将音乐、图片、视频、应用程序及其他文件发送给用户,来提供高性能、可扩展性及低成本的网络内容传递给用户。
内容分发网络节点会在多个地点,多个不同的网络上摆放。这些节点之间会动态的互相传输内容,对用户的下载行为优化,并借此减少内容供应者所需要的带宽成本,改善用户的下载速度,提高系统的稳定性。
CDN的优点
内容分发网络的总承载量可以比单一骨干最大的带宽还要大。这使得内容分发网络可以承载的用户数量比起传统单一服务器多。也就是说,若把有100Gbps处理能力的服务器放在只有10Gbps带宽的数据中心,则亦只能发挥出10Gbps的承载量。但如果放到十个有10Gbps的地点,整个系统的承载量就可以到10*10Gbps。
同时,将服务器放到不同地点,可以减少互连的流量,进而降低带宽成本。
适合缓存的内容
1. 不变的图像,如logo,图标等
2. js、css静态文件
3. 可下载的内容,媒体文件
适合协商缓存
1. HTML文件
2. 经常替换的图片
3. 经常修改的js、css文件,js、css文件的加载可以加入文件的签名来拒绝缓存,如‘index.css?签名’,‘index.签名.js’
不建议缓存的内容
1. 用户隐私等敏感数据
2. 经常改变的API数据接口
NGINX配置缓存策略
本地缓存配置
1. add_header指令:添加状态码为2XX和3XX的响应头信息,设置代码add_header name value [always],可以设置Pragma、Expires、Cache-Control,可以继承
2. expires指令:通知浏览器过期时长,设置代码expires time
3. Etag指令:指定签名,设置代码etag on|off,默认on
前端代码和资源压缩
优势
1. 让资源文件更小,加快文件在网络中的传输,让网页更快的展现,降低带宽和流量的开销
压缩方式
1. js、css、图片、html代码的压缩
2. gzip压缩
gzip配置
gzip on|off#是否开启gzipgzip_buffers 32 4K|16 8K#缓冲(在内存中缓存几块?每块多大)gzip_comp_level [1-9] #推荐6,压缩级别(级别越高,压得越小,越浪费CPU计算资源)
gzip_disable #正则匹配UA,什么样的Uri不进行gzip
gzip_min_length 200 #开始压缩的最小长度
gzip_http_version 1.0|1.1 #开始压缩的http协议版本
gzip_proxied #设置请求者代理服务器,该如何缓存内容
gzip_types text/plain application/xml image/png #对哪些类型的文件压缩,如txt、xml、css
gzip_vary on|off #是否传输gzip压缩标志
CDN加速
定义
1. CDN的全称content delivery network,内容分发网络
2. 尽可能避开互联网上有可能影响数据传输速度和稳定性的瓶颈和环节,使内容传输的更快、更稳定
3. 在网络各处放置节点服务器所构成的有的互联网基础之上的一层智能虚拟网络
4. CDN系统能够实现地根据网络流量和各节点的连接、负载状况以及到用户距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上
优势
1. 本地cache加速,提高了企业站点(尤其含有大量图片和静态页面站点)的访问速度
2. 跨运营商的网络加速,保证不同网络的用户都能得到良好的访问质量
3. 远程访问用户根据DNS负载均衡技术只能选择cache服务器
4. 自动生成服务器的远程Mirror(镜像)cache服务器,远程用户访问时从cache服务器上读取数据,减少远程访问的带宽、分担网络流量、减轻原站点web服务器负载等功能
5. 广泛分布的cdn节点加上节点之间的智能冗余机制,可以有效地预防黑客入侵
工作原理
1. 用户发起请求
2. 智能DNS的解析(根据IP判断地理位置、接入网类型、选择路由最短和负载最轻的服务器)
3. 取得缓存服务器ip
4. 把内容返回给用户(如果缓存中有,没有就执行5、6、7)
5. 向源站发起请求
6. 将结果返回给用户
7. 将结果存入缓存服务器
适用场景
1. 站点或者应用中大量静态资源的加速分发,例如css、js、图片和HTML
2. 大文件下载
3. 直播网站
独立图片服务器
必要性
1. 分担web服务器的I/O负载,将耗费资源的图片服务器分离出来,提高服务器的性能和稳定性
2. 能够专门对图片服务器进行优化,为图片服务器设置针对性的缓存方案,减少带宽成本,提高访问速度
3. 提高网站的可扩展性,通过增加图片服务器,提高图片吞吐能力
采用独立域名
原因:
1. 同一域名下浏览器的并发连接数有限制,突破浏览器连接数的限制
2. 由于cookie的原因,对缓存不利,大部分web cache都只缓存不带cookie的请求,导致每次的图片请求都不能命中cache
如何图片上传和同步
1. NFS共享方式
2. 利用FTP同步
动态语言静态化
将现有的PHP等动态语言的逻辑代码生成为静态的HTML文件,用户访问动态脚本重定向到静态HTML文件的过程。对实时性要求不高
原因:
1. 动态脚本通过会做逻辑计算和数据查询,访问量越大,服务器压力越大
2. 访问量大时可能会造成CPU负载过高,数据库服务器压力过大
3. 静态化可以减低逻辑处理压力,降低数据库服务器查询压力
实现方法
1. 使用模板引擎
2. 利用ob系列函数
需要获取swoole、workerman、TP、laravel、vue、Linux、redis以及性能优化,并发项目实战,微服务 架构方面的资料,可以私信我哦
评论列表(0条)