Ghost.js优化指南之一:服务器优化
Ghost.js默认使用Ghost.js系统默认使用了node.js作为文件服务器,但静态资源服务器是nginx而非node.js的专长。NGINX可以拦截静态资源的请求并使用NGINX响应,搭配内存缓存和静态GZIP压缩,可以最大程度的发挥服务器效能。
Ghost.js默认使用Ghost.js系统默认使用了node.js作为文件服务器,但静态资源服务器是nginx而非node.js的专长。NGINX可以拦截静态资源的请求并使用NGINX响应,搭配内存缓存和静态GZIP压缩,可以最大程度的发挥服务器效能。
资源服务器配置
本站在WEB服务配置中加入了静态资源服务器:
upstream local_static {
server localhost:81;
}
# 静态资源服务器
server{
listen 81;
server_name 127.0.0.1;
location ^~ /content/ {
root /var/www/ghost;
}
location ^~ /assets/ {
# 开启静态gzip,对js,css等进行预压缩
gzip_static on;
root /var/www/ghost/current/content/themes/casper;
}
location ^~ /public/ {
root /var/www/ghost/current/core/server;
}
}
静态资源路由
将443端口的静态资源请求转发到静态资源服务器:
# 查找静态资源缓存,找不到则转发至静态资源服务器
location ^~ /content/ {
# 使用cache_one这块缓存
proxy_cache cache_one;
# 设置缓存时间
proxy_cache_valid 200 304 302 5d;
proxy_cache_valid any 7d;
# 设置缓存key
proxy_cache_key $host$uri$is_args$args;
# 设置自动更新缓存
proxy_cache_background_update on;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
# 监视是否命中缓存,在响应头中会出现MISS或者HIT
add_header X-Cache $upstream_cache_status;
proxy_pass http://local_static;
proxy_hide_header vary;
expires max;
}
location ^~ /assets/ {
proxy_cache cache_one;
proxy_cache_valid 200 304 302 5d;
proxy_cache_valid any 7d;
proxy_cache_key $host$uri$is_args$args;
proxy_cache_background_update on;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
add_header X-Cache $upstream_cache_status;
proxy_hide_header vary;
proxy_pass http://local_static;
expires max;
}
location ^~ /public/ {
proxy_cache cache_one;
proxy_cache_valid 200 304 302 5d;
proxy_cache_valid any 7d;
proxy_cache_key $host$uri$is_args$args;
proxy_cache_background_update on;
proxy_set_header Host $host;
proxy_set_header X-Forwarded-For $remote_addr;
add_header X-Cache $upstream_cache_status;
proxy_hide_header vary;
proxy_pass http://local_static;
expires max;
}
ghost.js的静态文件在/content,/assets,/public三个文件夹中,拦截这三个地址的请求,并转发到静态资源缓存服务器,就可以实现博客的动静分离。让node.js从文件读取中解放出来。
同时,这个配置使用了静态资源的内存缓存,可以减少磁盘读写。具体关于内存缓存,请阅读上一篇:《博客建设指南》