精华内容
下载资源
问答
  • 动静分离

    千次阅读 2018-10-19 19:46:39
    动静分离的实现思路 动静分离是将网站静态资源(HTML,JavaScript,CSS,img等文件)与后台应用分开部署,提高用户访问静态代码的速度,降低对后台应用访问。 1.静态资源部署在Nginx 动静分离的一种做法是将静态资源...

    动静分离的实现思路
    动静分离是将网站静态资源(HTML,JavaScript,CSS,img等文件)与后台应用分开部署,提高用户访问静态代码的速度,降低对后台应用访问。
    1.静态资源部署在Nginx
    动静分离的一种做法是将静态资源部署在nginx上,后台项目部署到应用服务器上,根据一定规则静态资源的请求全部请求nginx服务器,达到动静分离的目标。
    2.静态资源部署至CDN上
    更好的方案是直接将静态资源全部存放在CDN服务器上。
    将项目中的JavaScript,CSS以及img文件都是存放在CDN服务器上,将HTML文件一起存放到CDN上之后,可以将静态资源统一放置在一种服务器上,便于前端进行维护;而且用户在访问静态资源时,可以很好利用CDN的优点——CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。
    3.后端API提供数据
    后端应用提供API,根据前端的请求进行处理,并将处理结果通过JSON格式返回至前端。目前应用主要采用Java平台开发,因此应用服务器主要是Tomcat服务器,现在也开始有部分应用采用 node进行开发,应用服务器也开始使用node服务器。
    4.前后端域名
    动静分离因为静态资源和应用服务分别部署在不同的服务器上,因此会面临域名策略的选择。
    相同域名
    采用相同域名下,用户请求api时可以避免跨域所带来的问题,相对开发更为快速,工作量也相对小一些。
    不同域名
    前后端采用不同域名时,需要前后端开发时兼容跨域请求的情况,开发量相对上一种会稍多一些。解决跨域方式最常用的方式就是采用JSONP,还有一种解决方式使用CORS(HTTP访问控制)允许某些域名下的跨域请求。
    目前在我们的项目中JSONP方式更多,CORS因为需要浏览器支持,因此只会在APP内嵌HTML5,且需要POST方式时中使用。
    采用不同域名的方式优点也是非常明显的,不同域名采用两个域名服务器,不同的域名服务器根据请求的不同采用不同的负载均衡策略;而且不同域名也可以邮箱方式前端携带过多的Cookie。
    动静分离的实现优缺点

    1. 优点
      api接口服务化:动静分离之后,后端应用更为服务化,只需要通过提供api接口即可,可以为多个功能模块甚至是多个平台的功能使用,可以有效的节省后端人力,更便于功能维护。
      前后端开发并行:前后端只需要关心接口协议即可,各自的开发相互不干扰,并行开发,并行自测,可以有效的提高开发时间,也可以有些的减少联调时间
      减轻后端服务器压力,提高静态资源访问速度:后端不用再将模板渲染为html返回给用户端,且静态服务器可以采用更为专业的技术提高静态资源的访问速度。
      2.缺点
      不利于网站SEO(搜索引擎优化):搜索引擎的网络爬虫一般是根据url访问页面,获取页面的内容后去掉没用的信息例如:CSS,JavaScript,然后分析剩下的文本内容;动静分离架构模式前端数据即在是由JavaScript来完成,这就会导致网络爬虫得到的信息部分丢失。在开发中可以采用前端缓存不经常变化数据的方式来解决,只有哪些经常发生变化的数据才每次向后端请求。
      开发量变大,前后端交流成本升高:后端api返回的数据,往往是有自身逻辑在内的,比如返回数据中的包含status(1-处理中,2-处理成功,3-处理失败),前端需要理解status的不同含义,对应的前端操作需要理解(如,status =1 or status = 2,不可提交)。
      在业务高速发展时需要慎重考虑:因为开发量变大,如果在业务开始阶段,缺乏前端又要求开发速度很快,就需要慎重考虑这种方式的实现成本对业务发展的影响。
      网站动静分离架构

    1.动静分离架构设计
    在该架构中,OSS作为海量文件存储源,静态图片、视频文件、下载包、App更新包等均放在OSS,同时OSS作为CDN的源站,通过CDN加速分发,用户通过CDN节点就近获得文件。
    该架构优势十分明显:
    降低Web服务器负载,静态文件访问负载全部通过CDN;
    海量存储空间,无需考虑存储架构升级;
    2.适用场景
    静态文件访问量大,服务器负载高,I/O问题导致用户访问卡顿
    静态文件数量大,服务器存储空间不够
    静态文件用户访问量大,且分布在各地
    移动更新包在某个时间段需要高速下载,且并发下载量高
    更多架构师进阶系列

    展开全文
  • 动静分离的一种做法是将静态资源部署在nginx上,后台项目部署到应用服务器上,根据一定规则静态资源的请求全部请求nginx服务器,达到动静分离的目标。nginx动静分离的好处api接口服务化:动静分离之后,后端应用更为...

    083c7d64d8a3b55caef33a8fc31d5c8e.png

    动静分离是将网站静态资源(HTML,JavaScript,CSS,img等文件)与后台应用分开部署,提高用户访问静态代码的速度,降低对后台应用访问。

    3d9eb6dd7720a094cb7ac67cf04b7be2.png

    动静分离的一种做法是将静态资源部署在nginx上,后台项目部署到应用服务器上,根据一定规则静态资源的请求全部请求nginx服务器,达到动静分离的目标。

    nginx动静分离的好处

    api接口服务化:动静分离之后,后端应用更为服务化,只需要通过提供api接口即可,可以为多个功能模块甚至是多个平台的功能使用,可以有效的节省后端人力,更便于功能维护。

    前后端开发并行:前后端只需要关心接口协议即可,各自的开发相互不干扰,并行开发,并行自测,可以有效的提高开发时间,也可以有些的减少联调时间

    减轻后端服务器压力,提高静态资源访问速度:后端不用再将模板渲染为html返回给用户端,且静态服务器可以采用更为专业的技术提高静态资源的访问速度。

    更多Nginx相关知识,请访问Nginx使用教程栏目!

    展开全文
  • nginx动静分离

    千次阅读 2020-12-25 18:42:00
    动静分离是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作,这就是网站静态化处理的核心思路 动静分离简单的概括是...

    一、概述

    1.1 动态页面与静态页面区别

    静态资源: 当用户多次访问这个资源,资源的源代码永远不会改变的资源。
    动态资源:当用户多次访问这个资源,资源的源代码可能会发送改变。

    1.2 什么是动静分离

    动静分离是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作,这就是网站静态化处理的核心思路
    动静分离简单的概括是:动态文件与静态文件的分离。
    伪静态:网站如果想被搜索引擎搜素到,动态页面静态技术freemarker等模版引擎技术

    1.3 为什么要用动静分离

    在我们的软件开发中,有些请求是需要后台处理的(如:.jsp,.do等等),有些请求是不需要经过后台处理的(如:css、html、jpg、js等等文件),这些不需要经过后台处理的文件称为静态文件,否则动态文件。因此我们后台处理忽略静态文件。这会有人又说那我后台忽略静态文件不就完了吗。当然这是可以的,但是这样后台的请求次数就明显增多了。在我们对资源的响应速度有要求的时候,我们应该使用这种动静分离的策略去解决。
    动静分离将网站静态资源(HTML,JavaScript,CSS,img等文件)与后台应用分开部署,提高用户访问静态代码的速度,降低对后台应用访问。这里我们将静态资源放到nginx中,动态资源转发到tomcat服务器中。
    因此,动态资源转发到tomcat服务器我们就使用到了前面讲到的反向代理了。

    二、Nginx实现动静分离

    在这里插入图片描述
    2.2 配置
      动静分离的原理很简单,通过location对请求url进行匹配即可,在/Users/Hao/Desktop/Test(任意目录)下创建 /static/imgs 配置如下:

    ###静态资源访问

    server {
      listen       80;
      server_name  static.haoworld.com;
      location /static/imgs {
           root /Users/Hao/Desktop/Test;
           index  index.html index.htm;
       }
    }
    

    ###动态资源访问

     server {
      listen       80;
      server_name  www.haoworld.com;
        
      location / {
        proxy_pass http://127.0.0.1:8080;
         index  index.html index.htm;
       }
    }
    

    三、动静分离与前后分离区别:

    动静分离动态资源与静态资源分离,不会部署在同一台服务器上。
    前后分离:网站架构模式,微服务开发基于SOA面向于服务器开发,后台和前端都采用调用接口方式。将一个项目拆分成一个控制Web(前端)和接口(后端),最终使用rpc远程调用技术。视图层和业务逻辑层拆分,中间采用RPC远程调用技术

    四、一些问题

    为什么互联网公司项目中,静态资源url后面会加上一个时间戳?他的作用:控制缓存
    目的:最终的目的是为了控制项目上线的时候,薪静态资源与老的浏览器缓存静态资源避免冲突问题。
    解决办法:加上时间戳规范t = 项目上线
    304走本地缓存状态码原理:
    默认浏览器图片缓存是7天。
    第一次下载资源的时候,客户端保存修改资源时间
    第二次下载资源的时候,服务端判断客户端上一次修改的时间是否需返回200还是304
    第二次下载资源的时候,服务端判断当前资源文件与客户端上一次修改的时间是否需返回200还是304客户端第二次下载资源最后修改时间 2018/6/28 下午11:07:11
    服务端最后一次修改时间大于客户端最后一次修改的时间200重 新加载资源
    服务器端最后一次修改的时间小于客户端最后修改的时间返回304走本地缓存
    生产环境中js css最后一次的修改时间与客户端缓存的最后一次修改的时间可能会产生
    冲突。服务器在2018年5月22日上线,用户在2018年6月01日访问,用户上线新js文件在2018年06月5日最后一次修改时间还是保留上次上线时间。所以一般来说在服务器上线的时候,都会在静态资源上加上时间戳 强制最新的资源

    参考资料:
    感谢作者,写的很详细
    https://www.cnblogs.com/haoworld/p/nginx-shi-xian-dong-jing-fen-li.html

    展开全文
  • 1. 动静分离的实现思路 动静分离是将网站静态资源(HTML,JavaScript,CSS,img等文件)与后台应用分开部署,提高用户访问静态代码的速度,降低对后台应用访问。 动静分离的一种做法是将静态资源部署在nginx上,...

     

    1. 动静分离的实现思路

    动静分离是将网站静态资源(HTML,JavaScript,CSS,img等文件)与后台应用分开部署,提高用户访问静态代码的速度,降低对后台应用访问。

     

    动静分离的一种做法是将静态资源部署在nginx上,后台项目部署到应用服务器上,根据一定规则静态资源的请求全部请求nginx服务器,达到动静分离的目标。

    1.1 静态资源部署至CDN上

    我们的方案是直接将静态资源全部存放在CDN服务器上。因为之前项目中的JavaScript,CSS以及img文件都是存放在CDN服务器上,将HTML文件一起存放到CDN上之后,可以将静态资源统一放置在一种服务器上,便于前端进行维护;而且用户在访问静态资源时,可以很好利用CDN的优点——CDN系统能够实时地根据网络流量和各节点的连接、负载状况以及到用户的距离和响应时间等综合信息将用户的请求重新导向离用户最近的服务节点上。

    1.2 后端API提供数据

    后端应用提供API,根据前端的请求进行处理,并将处理结果通过JSON格式返回至前端。目前应用主要采用Java平台开发,因此应用服务器主要是Tomcat服务器,现在也开始有部分应用采用 node进行开发,应用服务器也开始使用node服务器。

    1.3 前后端域名

    动静分离因为静态资源和应用服务分别部署在不同的服务器上,因此会面临域名策略的选择。

    • 相同域名
      采用相同域名下,用户请求api时可以避免跨域所带来的问题,相对开发更为快速,工作量也相对小一些。

    • 不同域名
      前后端采用不同域名时,需要前后端开发时兼容跨域请求的情况,开发量相对上一种会稍多一些。解决跨域方式最常用的方式就是采用JSONP,还有一种解决方式使用CORS(HTTP访问控制)允许某些域名下的跨域请求。
      目前在我们的项目中JSONP方式更多,CORS因为需要浏览器支持,因此只会在APP内嵌HTML5,且需要POST方式时中使用。

    采用不同域名的方式优点也是非常明显的,不同域名采用两个域名服务器,不同的域名服务器根据请求的不同采用不同的负载均衡策略;而且不同域名也可以邮箱方式前端携带过多的Cookie。

    2. 动静分离的实现优缺点

    2.1 优点

    • api接口服务化:动静分离之后,后端应用更为服务化,只需要通过提供api接口即可,可以为多个功能模块甚至是多个平台的功能使用,可以有效的节省后端人力,更便于功能维护。
    • 前后端开发并行:前后端只需要关心接口协议即可,各自的开发相互不干扰,并行开发,并行自测,可以有效的提高开发时间,也可以有些的减少联调时间
    • 减轻后端服务器压力,提高静态资源访问速度:后端不用再将模板渲染为html返回给用户端,且静态服务器可以采用更为专业的技术提高静态资源的访问速度。

    2.2 缺点

    • 不利于网站SEO(搜索引擎优化):搜索引擎的网络爬虫一般是根据url访问页面,获取页面的内容后去掉没用的信息例如:CSS,JavaScript,然后分析剩下的文本内容;动静分离架构模式前端数据即在是由JavaScript来完成,这就会导致网络爬虫得到的信息部分丢失。在开发中可以采用前端缓存不经常变化数据的方式来解决,只有哪些经常发生变化的数据才每次向后端请求。

    • 开发量变大,前后端交流成本升高:后端api返回的数据,往往是有自身逻辑在内的,比如返回数据中的包含status(1-处理中,2-处理成功,3-处理失败),前端需要理解status的不同含义,对应的前端操作需要理解(如,status =1 or status = 2,不可提交)。

    • 在业务高速发展时需要慎重考虑:因为开发量变大,如果在业务开始阶段,缺乏前端又要求开发速度很快,就需要慎重考虑这种方式的实现成本对业务发展的影响。

    3. 实现案例

    这个是在公司做的内嵌到app里的HTML5页面

    展开全文
  • Nginx动静分离

    2019-12-02 09:32:18
    Nginx动静分离 前言 在阅读这篇之前可以去看博主的windows10系统下安装nginx的安装并配置! 学习安装配置nginx 什么是动静分离 动静分离:将项目中的css、js、html、jpg等静态资源和jsp、ftl等动态资源分开处理的...
  • HAProxy——动静分离

    2021-01-09 12:08:11
    HAProxy——动静分离1. 在HAProxy端配置动静分离策略2. 在HAProxy端配置http3. 配置server2和server34. 测试 1. 在HAProxy端配置动静分离策略 server1: cd /etc/haproxy/ vim haproxy.cfg 注释 93 #listen westos ...
  • KeepAlived + Nginx + Haproxy + PHP + 动静分离
  • Nginx4 - 动静分离解析

    2019-11-26 11:29:53
    动静分离
  • nginx动静分离脚本

    2021-03-10 09:51:24
    nginx源码包和动静分离的脚本,适用于centOS7
  • 实现动静分离

    2019-10-08 00:39:49
    目录 ... nginx 实现动静分离 Nginx动静分离基本概述 Nginx动静分离场景实践 多台服务器实现动静分离 Nginx资源分离场景实践 根据iphone、安卓,pc跳转不通的页面环境规划 实际上的配置 ...
  • 下面学习一下Nginx的动静分离如何配置。 二、动静分离 1、何为动静分离呢? Nginx 动静分离,简单来说,就是动态请求和静态请求分开,也可以理解成使用 Nginx处理静态页面,Tomcat 处理动态页面。动静分离从目前...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 23,130
精华内容 9,252
关键字:

动静分离