什么是动静分离
所谓系统动静分离,其实,就是将网站静态资源(HTML,JavaScript,CSS,img等文件)与后台应用分开部署,提高用户访问静态代码的速度,降低对后台应用服务器的请求。后台应用服务器只负责动态数据请求。
优势:
1、分担负载,减轻web服务器的压力,适用于大负载。
2、静态资源放置cdn,同时还可以通过配置缓存到客户浏览器中,这样极大减轻web服务器的压力。
劣势:
1、网络环境不佳时,ajax回应很慢,导致页面出现空白,出错处理会不好看。
2、不利于网站SEO(搜索引擎优化) ,
3、增加了开发复杂度。
实现方案
动静分离最简单的实现方案就是:Nginx服务器作为代理服务器,根据匹配规,将动态的数据请求转发给tomcat,将静态资源请求直接返回本地静态资源文件,从而达到动静分离的目的。
实现步骤
1、首先配置Nginx,打开 nginx.conf 配置文件的,在location / {} 上方添加 , nginx 的其他配置,请参考前一篇文章《nginx 和 IIS 实现负载均衡》。具体配置如下:
代码语言:javascript复制 #静态资源缓存设置
location ~ .*.(gif|jpg|jpeg|png|bmp|swf|ioc|rar|zip|txt|flv|mid|doc|ppt|pdf|xls|mp3|wma)$ {
root static; #static文件夹在Nginx目录下没有,需创建,和conf文件夹同级
expires 30d;
}
location ~ .*.(js|css)?$ {
root static;
expires 30d;
}
注意:
1、static文件夹在Nginx目录下没有,需创建,和conf文件夹同级。也可以自定义。
2、静态资源缓存设置很简单就是通过url 的正则匹配。
效果如下:
2. 在Nginx 下 创建 static 目录,将图片,js, css 等文件 拷贝到该目录下
注意:最好,网站的原来静态文件目录最好还是保留,我的测试网站是asp.net mvc 删掉相关目录,网站启动会提示找不到相关目录,
3、测试动静分离
启动nginx服务器和tomcat服务器,在浏览器访问10089端口,查看firefox浏览器的开发者工具,如下:
可以发现,静态资源都是直接从磁盘获取,响应头都有Cache-Control字段,静态资源的请求时间均为0ms。
最后
上述内容只是nginx 实现动静分离的最简单的方案。欢迎大家交流,大家私信我(架构)。