一般来说,静态资源是指JavaScript、CSS、Img等文件,动态资源则是通过PHP、Java等后端语言运行一系列的代码逻辑来获取的。

如果是静态资源的请求,就直接让nginx在静态资源目录下面读取,然后返回给客户端

如果是动态资源的请求,则nginx利用反向代理把请求转发给后端应用去处理,然后后端应用将结果返回给nginx,nginx再返回给客户端

在使用前后端分离之后,可以很大程度的提升静态资源的访问速度,同时减轻后端应用的处理压力。拿PHP之Laravel框架来说,简单的获取一个静态文件,就需要初始化框架代码,这个过程也比较耗时,性价比是很低的

# 动态内容
location ~ \.php$ {
    root          html;
    fastcgi_pass  127.0.0.1:9000;
    fastcgi_index  index.php;
    fastcgi_param  SCRIPT_FILENAME  /scripts$fastcgi_script_name;
    include        fastcgi_params;
}

# 静态内容
location ~ \.(png|jpeg|jpg|js|css|woff|ttf)$ {
    expires 1h;
} 

当然,如果有条件的话,还是建议将静态资源存放到七牛或阿里云OSS中,利用CDN可以获取更快的静态资源加载速度

专题阅读

03-05 21:28