网站“动静分离”分析及实战

所谓动静分离就是通过nginx(或apache等)来处理用户端请求的静态页面,tomcat(或weblogic)处理动态页面,从而达到动静页面访问时通过不同的容器来处理。

0x01网站“动静分离”分析

(一)动静分离简析

普通建站,只需一台服务器即可,这就意味着一个网站的所有资源全部存放于本地(服务器里)。随着网站的数据日益增加,服务器磁盘看着变小,网站处理速度会越来越慢。此时你是不是该考虑换服务器了。这时,不妨考虑下给网站来个“大瘦身”。可以说服务器80%的磁盘被图片等媒体资源占用,把这些资源用专门的容器存储起来(对象存储)即为简单的动静分离。

静态文件:图片,视频,音乐,JS,CSS,HTML等可直接访问的文件动态文件:需要服务器进行编译运行的文件(.jsp .php等)

(二)动静分离优点

1.降低Web服务器负载,加快网站访问速度

服务器只需编译运行动态文件,大大降低了服务器负载。因为不用加载那些静态文件,所以降低了服务器带宽需求。网站瞬间加载,不会出现卡顿的问题。

2.海量存储空间存储费用最低

服务器在磁盘满了之后,扩容所需的投资是巨大的。而使用对象存储基本是不用在意的。

3.流量费用低

服务器流量基本是以带宽计费,费用也是高的不行。如果用服务器存放图片等媒体文件,加载慢不说,还特别贵。

以下为腾讯云服务器带宽1Mps和10Mps费用比较

0x02实战网站文件动静分离(阿里云OSS

网站动静分离架构

在该架构中,OSS作为海量文件存储源,静态图片、视频文件、下载包、App更新包等均放在OSS,同时OSS作为CDN的源站,通过CDN加速分发,用户通过CDN节点就近获得文件。

该架构优势十分明显:

  • 降低Web服务器负载,静态文件访问负载全部通过CDN;
  • 存储费用最低,OSS的存储费用仅为ECS磁盘费用的50%;
  • 海量存储空间,无需考虑存储架构升级;
  • 流量费用低,相比直接通过OSS访问,除极少额外增加的回源流量外,主要流量使用CDN流量,单价最低只需0.26GB,远远低于OSS直接访问的外网流量单价。

第一步:

对ECS上的网站程序进行整理,把动态程序部分和静态部分分不同的目录管理起来:

  • 建立Images目录,放置所有网站高清素材图片;
  • 建立Javascript目录,放置所有的JS脚本;
  • 建立Attachment目录,放置所有用户上传的图片和附件。

第二步:

进入到OSS控制台,点击“CDN加速OSS”。

  • 选择新建Bucket。根据你ECS所在的区域选择Bucket所在区域,权限选择“公共读”,Bucket名称与ECS上新建的目录的名称对应,比如”acar-image-bucket“,选择下一步;
  • 输入“image.acar.com”作为您网站高清素材图片的加速域名后,点击下一步;
  • 选择默认的自动添加阿里云解析,点击完成。

第三步:

点击“立即上传文件,体验加速效果”。

  • 把您在第一步中建立在ECS上的Images目录下的所有图片文件上传到这里(acar-image-bucket下),您可以使用OSS客户端工具更加方便灵活的完成图片的上传(OSS客户端工具Windwos版本);
  • 点击列表中已经上传文件的“获取地址”,您就能获取到该文件的CDN加速的访问地址,通常为“您输入的加速域名+'/'+'文件名'”的格式;
  • 逐一完成图片文件的上传。

第四步:

按照前三步的示意,把其他两个文件也通过“CDN加速OSS”的方式上传,分别建立“acar-js-bucket”和"acar-csimages-bucket"两个使用CDN加速的OSSbucket。

第五步:

在原本ECS系统中,找到原本访问静态文件的代码,把访问URL修改为加速访问的地址。

大功告成,以后用户访问您的网站的静态文件就全部通过OSS+CDN的方式访问,不再占用您ECS的资源。

需要注意的是,如果您想把用户上传的文件自动同步到“acar-csimages-bucket”中,您可以参考OSS相关SDK和API的PutObjcet部分,实现代码级别自动上传。

注意事项

  •  OSS是以Bucket为单位设置CDN加速,您最好为每个Bucket指定一个二级域名,方便管理;
  •  您可以通过OSS一键加速配置,静态文件的OSS和CDN的相关配置;
  •  用户第一次访问静态资源,会先回源OSS获取资源再推送到CDN,需要大概5分钟左右的生效时间。您可以在更新资源后,通过刷新的方式,让CDN主动回源,让用户访问时不再等待。

wordpress等程序已开发出插件,不需要手动上传插件,方便使用。

具体插件请百度一下

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏木子昭的博客

长时间保持ssh连接不断开的技巧

经常用ssh连接服务器的小伙伴, 可能会像我一样, 需要时不时地恢复一下断开的连接, 原因是NAT防火墙喜欢对空闲的会话进行超时处理,以确保它们状态表的干净和内...

972
来自专栏DeveWork

WordPress 免插件仅代码实现 Gravatar 头像缓存

如果你还不知道是神马东东,请先往《设置你的Gravatar头像的方法》一文了解相关资料。因为我大中华局域网的原因, Gravatar 头像所托管的网站有时候会挂...

17810
来自专栏魏艾斯博客www.vpsss.net

搬瓦工上线服务器状态页 可随时查看服务器状态

1722
来自专栏FreeBuf

CIA机密文档追踪工具Scribbles详细分析

2017年4月28日,维基解密发布了CIA“涂鸦”(Scribbles)项目的文档和源代码(参考地址1)。这是一个文档预处理系统,用于给涉密文档打上“Web b...

1907
来自专栏Hongten

Crystal Reports 2008(水晶报表) 第一个报表

学习Craystal Reports 2008的时候,光看说明文档,很多东西看了就忘了。

1013
来自专栏奇点大数据

Hbase优化

本文对hbase集群进行优化,主要涵盖硬件和操作系统,网络通信,JVM,查询,写入,核心服务,配置参数,zookeeper,表设计等多方面。 我...

2655
来自专栏黑白安全

SSH(安全外壳协议)

SSH 为 Secure Shell 的缩写,由 IETF 的网络小组(Network Working Group)所制定;SSH 为建立在应用层基础上的安全协...

663
来自专栏张戈的专栏

解决wp-super-cache无法(预)缓存问题

突然发现 WP-SUPER-CACHE 无法预缓存,点击【立即加载预缓存】后没有任何效果,并且垃圾回收定时器也失效了,缓存文件全是几天前的,感觉很奇怪! 闲下来...

3275
来自专栏PHP实战技术

ThinkPHP3.2.3集成微信分享JS-SDK实践

在没有集成微信分享js-sdk前是这样的:没有摘要,缩略图任意抓取正文图片

2508
来自专栏菩提树下的杨过

c#:Reflector+Reflexil 修改编译后的dll/exe文件

不知道大家有没有这样的经历:现场实施时测试出一个bug,明明知道某个dll/exe文件只要修改一二行代码即可,但手头没有开发环境,紧急情况下,可以用reflec...

2257

扫码关注云+社区