分布式系统架构:技术栈详解与快速进阶
上QQ阅读APP看书,第一时间看更新

4.4.3 动静分离

在介绍动静分离之前,需先了解动态和静态。所谓动态,指的是需更新编译处理的资源,如JSP/PHP。相对由服务端编程语言实现的页面,这种页面需要在服务端动态处理。所谓静态,指的是不需要更新编译的资源,如CSS/JSS/HTML等。

Nginx实现动静分离:在利用反向代理的过程中,Nginx会判断是否是静态的资源,如果是,则直接从Nginx发布的路径去读取,而不需要从后端服务器获取。

动静分离优势:充分利用服务器资源,减少不必要的请求,减少后端服务器的压力,快速提高页面加载速度。

Nginx实现动静分离的方法如代清单码4-6所示。

代码清单4-6 Nginx实现动静分离

location / {
    root   /root;               #定义服务器的默认网站根目录位置
    index index.html index.htm; #定义首页索引文件的名称
}
# 定义错误提示页面
error_page   500 502 503 504 /50x.html;
    location = /50x.html {
    root   /root;
}
#静态文件,Nginx自己处理
location ~ ^/(images|javascript|js|css|flash|media|static)/ {
    root /zachary/shop;
    #过期5天
    expires 5d;
}

当浏览器请求获取静态资源时,若浏览器请求的响应状态码为304,其表示从缓存中获取静态资源,而Nginx可以对静态资源进行缓存,则当下次浏览器再请求静态资源时,如资源未变更,后续请求会从浏览器缓存中读取加载。

注意

浏览器获取静态资源不请求后端服务器,从而达到动静分离的效果。