- 前言
一个拥有大型分布式网站的公司(比如 Facebook 或 Flickr)可能会决定将所有机器只用于服务映像。Node将是这个问题的一个不错的解决方案,因为该公司能使用它编写一个简单的文件检索器,然后处理数万条连接。Node将查找映像文件,返回文件或一个404错误,然后什么也不用做。这种设置将允许这类分布式网站减少它们服务映像、.js和 .css文件等静态文件所需的服务器数量。
- 实现
var sys = require('sys'),
http = require('http'),
url = require('url'),
path = require('path'),
fs = require('fs');
http.createServer(function(request, response) {
var uri = url.parse(request.url).pathname;
var filename = path.join(__dirname, uri);
path.exists(filename, function(exists) {
if(!exists) {
response.writeHead(404, { "Content-Type": "text/plain" });
response.write("404 Not Found\n");
response.end();
return;
}
fs.readFile(filename, "binary", function(err, file) {
if(err) {
response.writeHead(500, { "Content-Type": "text/plain" });
response.write(err + "\n");
response.end();
return;
}
var contentType='none';
var ext = path.extname(filename);
switch(ext)
{
case ".js":
contentType = 'text/javascript';
break;
case ".css":
contentType = 'text/css';
break;
}
response.writeHead(200, { 'Content-Type': contentType });
response.write(file, "binary");
response.end();
});
});
}).listen(8000);
sys.puts('server running at http://localhost:8000/');
- 启动
node statis.js
对应的css,js文件根据http请求的地址,分别放到statics.js文件的相关目录中。