Ghost.js优化指南之一:服务器优化

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从文件读取中解放出来。
同时,这个配置使用了静态资源的内存缓存,可以减少磁盘读写。具体关于内存缓存,请阅读上一篇:《博客建设指南》