一、“动静分离”是什么呢?
在介绍动静分离之前,我感觉还是有必要介绍一下:什么是静态网站?什么是动态网站?由于我之前已经在一篇个人博客中详细介绍了动静态网站,在这里就不再做详细的描述(有需要的小伙伴可以前往了解:《什么是动静态网站?》)。知道什么是动态网站之后,我们拿最常见的PHP动态网站来说,一次完整的网站加载请求中,浏览器客户端会向服务器请求一系列所需静态文件:.html;.css;.js;.jpg;.png还有一些字体文件等,当然还包括动态请求:***.php等。而所谓的“动静分离”是将网站静态资源(HTML,CSS,JS,JPG,PNG等文件)与后台应用分开部署,提高用户访问静态文件的速度,降低对后台应用访问,这样您的小服务器就可以把全部精力投入到动态请求的查询和解析中去,从而有效的减轻后端服务器的压力。
形象一点、就好比以“传统方式”(所有文件请求源站服务器)加载页面的网站就好像“一个和尚挑水吃”;而“动静分离”之后的网站就好像“两个和尚挑水吃”,效率明显会提升许多;而如果您再给静态文件加个CDN部署,那就像找个力气大的大个儿来帮你挑水了~
二、“动静分离”怎么操作?
动态文件还是放在源站服务器,所以关于动态文件的存储就不用介绍了~当然也已经有部分云计算服务商(例如腾讯云)已经推出了“动态加速”,接入之后便可以有效提升动态文件在全球各地的加载速度!而静态文件我们一般不用动态服务器来存储,纯静态化存储更有利于静态文件的响应!市面上目前主流的对象存储服务商有:阿里云OOS、百度云BOS、腾讯云COS、又拍云、七牛云等。
怎么选择?阿里云、百度云收费,没有免费额度;又拍云有免费额度,但是必须在业务里面放上又拍云的LOGO;七牛云的话之前听鹅场员工说七牛用的还是腾讯的……首先,小服务商我是不推荐的;其次,阿里云企业用的比较多,起码我之前就职的几家公司对象存储用的都是阿里云的;最后,强烈建议个人站长使用腾讯云!理由?对象存储COS和CDN每个月都有免费额度10G,新开通业务用户每个月还送50G流量包。我的建站理念就是:能不花钱的咱不花钱!花最少的钱做最大的提升!省下来的钱再花到那些不得不花钱的“刀刃”上!
最后提一下,腾讯云COS有V4和V5两个版本,现在新开业务用户一般都是V5版本,老用户可以直接工单申请体验V5版本。怎么用?如果你是独立开发的网站,直接跟技术提需求就行了;如果你是用开源程序搭建的个人/中小企业站点,直接找相应的插件就行了!下面以WordPress为例,分享两个V4/V5的腾讯云对象存储COS插件(射雕天龙制作、由水冷眸更新):
WordPress远程附件支持之腾讯云对象存储COS插件V4版本下载:[点我下载] ;
WordPress远程附件支持之腾讯云对象存储COS插件V5版本下载:[点我下载] 。
对象存储空间或者CDN流量包不够用的也可以直接前往官网活动页购买即可:
腾讯云 COS 具有高扩展性、低成本、可靠和安全等特点,能为您提供专业的数据存储服务。您可以使用控制台、API、SDK 等多种方式连接到腾讯云对象存储,实时存储和管理您的业务数据:[点我前往] 。
腾讯云 CDN 在全国各省份部署了 1100+ 加速节点,涵盖了移动、联通、电信等主流运营商,以及铁通、长宽等多家中小型运营商。每个节点单机服务器性能能够达到双百万,总节点带宽 80T+,完美解决地域、网络、源站性能等多因素引起的用户访问延迟较高、不稳定等问题:[点我前往] 。
当然如果您想再加个和尚一起挑水吃?可以单独给数据库购买个数据库服务器,提升效果也杠杠的!数据库服务器最好跟源站服务器要在同个区域!
三、“动静分离”的优缺点?
优点:
- api接口服务化:动静分离之后,后端应用更为服务化,只需要通过提供api接口即可,可以为多个功能模块甚至是多个平台的功能使用,可以有效的节省后端人力,更便于功能维护。
- 前后端开发并行:前后端只需要关心接口协议即可,各自的开发相互不干扰,并行开发,并行自测,可以有效的提高开发时间,也可以有些的减少联调时间。
- 减轻后端服务器压力,提高静态资源访问速度:后端不用再将模板渲染为html返回给用户端,且静态服务器可以采用更为专业的技术提高静态资源的访问速度。
缺点:
- 不利于网站SEO(搜索引擎优化):搜索引擎的网络爬虫一般是根据url访问页面,获取页面的内容后去掉没用的信息例如:CSS,JavaScript,然后分析剩下的文本内容;动静分离架构模式前端数据即在是由JavaScript来完成,这就会导致网络爬虫得到的信息部分丢失。在开发中可以采用前端缓存不经常变化数据的方式来解决,只有哪些经常发生变化的数据才每次向后端请求。
- 开发量变大,前后端交流成本升高:后端api返回的数据,往往是有自身逻辑在内的,比如返回数据中的包含status(1-处理中,2-处理成功,3-处理失败),前端需要理解status的不同含义,对应的前端操作需要理解(如,status =1 or status = 2,不可提交)。
- 在业务高速发展时需要慎重考虑:因为开发量变大,如果在业务开始阶段,缺乏前端又要求开发速度很快,就需要慎重考虑这种方式的实现成本对业务发展的影响。
接地箱
流弊流弊,学习了,什么时候帮我看看接地箱这个词好不好做?
屈兴东 官方
@接地箱 做好你的龙岩花生就行了~
螺旋管
东哥帮我看下螺旋管这个词好做么(๑˙ー˙๑)
屈兴东 官方
@螺旋管 外包给我秒上~