当前时区为 UTC + 8 小时



发表新帖 回复这个主题  [ 9 篇帖子 ] 
作者 内容
1 楼 
 文章标题 : [五星]开发一个静态文件Web服务程序,要求性能尽可能好
帖子发表于 : 2012-06-29 9:35 
论坛管理员

注册: 2005-03-27 0:06
帖子: 10161
系统: Ubuntu 12.04
送出感谢: 7
接收感谢: 130
1 任务内容: 使用任何语言或脚本,开发一个静态文件Web服务程序,要求性能尽可能好

2 任务的难度: 五星

3 任务的目的: 学习 Linux 下编程

4 任务所涉及的软件: 任何语言,推荐 node.js

5 任务将大致消耗的时间: 2-3天


页首
 用户资料  
 
2 楼 
 文章标题 : Re: [五星]开发一个静态文件Web服务程序,要求性能尽可能好
帖子发表于 : 2012-06-29 11:56 
头像

注册: 2009-01-28 21:42
帖子: 642
送出感谢: 0 次
接收感谢: 1
不是很懂, :em06 :em06


页首
 用户资料  
 
3 楼 
 文章标题 : Re: [五星]开发一个静态文件Web服务程序,要求性能尽可能好
帖子发表于 : 2012-06-29 11:57 
头像

注册: 2007-12-14 13:40
帖子: 49903
地址: 志虚国乌由市
系统: Winbuntu
送出感谢: 29
接收感谢: 414
我码盲,我路过 :em06


_________________
冷轩信

渠月 · QY

本人只会灌水,不负责回答问题

无聊可以点一下→ http://u.nu/ubuntu

安装flash 还是要用
代码:
sudo apt install adobe-flashplugin


页首
 用户资料  
 
4 楼 
 文章标题 : Re: [五星]开发一个静态文件Web服务程序,要求性能尽可能好
帖子发表于 : 2012-06-29 13:56 
头像

注册: 2005-08-14 21:55
帖子: 58428
地址: 长沙
送出感谢: 4
接收感谢: 274
看来 oneleaf 又玩起 node.js了
非it围观。


_________________
● 鸣学


页首
 用户资料  
 
5 楼 
 文章标题 : Re: [五星]开发一个静态文件Web服务程序,要求性能尽可能好
帖子发表于 : 2012-06-29 13:59 
头像

注册: 2010-10-07 14:23
帖子: 33999
地址: 某系某星某洲某国某省某市
系统: Archdows10
送出感谢: 29
接收感谢: 151
围观 :em04


_________________
心似浮云常自在,意如流水任东西。
此事背后一定有个天大的咪咪
广告:
1、走过路过,不要错过,dropbox网盘2.25G大放送
py大法好,退C保平安
java多妖孽,VB本异端
日诵一千遍,快活似神仙


页首
 用户资料  
 
6 楼 
 文章标题 : Re: [五星]开发一个静态文件Web服务程序,要求性能尽可能好
帖子发表于 : 2012-06-29 15:49 
论坛管理员

注册: 2005-03-27 0:06
帖子: 10161
系统: Ubuntu 12.04
送出感谢: 7
接收感谢: 130
代码:
var url = require("url");
var http = require('http');
var path = require("path");
var fs = require("fs");
var root = '.';

function onRequest (request, response) {
    var pathname = url.parse(request.url).pathname;
    var realPath = path.join(root,path.normalize(pathname));
    path.exists(realPath, function (exists) {
        if (!exists) {
            response.writeHead(404, {'Content-Type': 'text/plain'});
            response.end("404 Not found");
        } else {
            fs.stat(realPath,function(err, stats){
                if (stats.isDirectory()) {
                   fs.readdir(realPath, function (err, files){
                       response.writeHead(200, {'Content-Type': 'text/html'});
                       response.write('<html><head></head><body>');
                       response.write('<p><a href="..">..</a></p>');
                       files.forEach(function(file) {
                           response.write('<p><a href="'+path.join(realPath,file)+'">'+file+'</a></p>');
                       });
                       response.write('</body></html>');             
                       response.end();
                    });
                } else {   
                    fs.readFile(realPath, "binary", function (err, file) {
                       response.writeHead(200, {'Content-Type': 'application/octet-stream'});
                       response.write(file, "binary");
                       response.end();
                    });
                }
            });
        }
    });
};

http.createServer(onRequest).listen(8888);


写了一个超简单的。
先安装node.js环境。 sudo apt-get install nodejs
完毕后将上面代码保存为 index.js ,运行:node index.js 然后在浏览器访问 http://127.0.0.1:8888
其中代码里面的root为静态文件的根目录,可以自行修改。


页首
 用户资料  
 
7 楼 
 文章标题 : Re: [五星]开发一个静态文件Web服务程序,要求性能尽可能好
帖子发表于 : 2012-06-29 16:00 
头像

注册: 2008-08-13 8:48
帖子: 26402
地址: 东海硇州,一双管钥。
系统: Fundu i64
送出感谢: 50
接收感谢: 344
支持神掐。 :em04


_________________
◎当我站在道德的高度上俯视别人的时候,发现自己是多么渺小。
♥执着但不偏激,反对而不排斥,坚决捍卫矛盾体的存在方式。
★★★天气预报★★★
fcitx-yatable一个可以使用的码表输入法
[教程]几个实例攻克软件编译难关
Gentoo Development Guide
字体相关


页首
 用户资料  
 
8 楼 
 文章标题 : Re: [五星]开发一个静态文件Web服务程序,要求性能尽可能好
帖子发表于 : 2012-06-29 16:22 
论坛管理员

注册: 2005-03-27 0:06
帖子: 10161
系统: Ubuntu 12.04
送出感谢: 7
接收感谢: 130
加了mime的自动文件类型判断:

#安装 node.js 的包管理器 npm ,并利用npm去安装mime模块
#sudo apt-get install nodejs
sudo apt-get install npm
sudo npm install mime

修正后的代码如下:

代码:
var url = require("url");
var http = require('http');
var path = require("path");
var fs = require("fs");
var mime = require('mime');
var root = '.';

function onRequest (request, response) {
    var pathname = url.parse(request.url).pathname;
    var realPath = path.join(root,path.normalize(pathname));
    path.exists(realPath, function (exists) {
        if (!exists) {
            response.writeHead(404, {'Content-Type': 'text/plain'});
            response.end("404 Not found");
        } else {
            fs.stat(realPath,function(err, stats){
                if (stats.isDirectory()) {
                   fs.readdir(realPath, function (err, files){
                       response.writeHead(200, {'Content-Type': 'text/html'});
                       response.write('<html><head></head><body>');
                       response.write('<p><a href="..">..</a></p>');
                       files.forEach(function(file) {
                           response.write('<p><a href="'+path.join(realPath,file)+'">'+file+'</a></p>');
                       });
                       response.write('</body></html>');             
                       response.end();
                    });
                } else {   
                    fs.readFile(realPath, "binary", function (err, file) {
                       type=mime.lookup(realPath);
                       response.writeHead(200, {'Content-Type': type});
                       response.write(file, "binary");
                       response.end();
                    });
                }
            });
        }
    });
};

http.createServer(onRequest).listen(8888);


页首
 用户资料  
 
9 楼 
 文章标题 : Re: [五星]开发一个静态文件Web服务程序,要求性能尽可能好
帖子发表于 : 2012-06-29 20:28 
头像

注册: 2010-06-16 1:05
帖子: 14683
地址: Tencent
系统: Mac OS X
送出感谢: 1
接收感谢: 153
我只会用python写一个二行的。。。


_________________
twitter求fo:http://twitter.com/maplebeats
博客求踩:http://maplebeats.com


页首
 用户资料  
 
显示帖子 :  排序  
发表新帖 回复这个主题  [ 9 篇帖子 ] 

当前时区为 UTC + 8 小时


在线用户

正在浏览此版面的用户:没有注册用户 和 1 位游客


不能 在这个版面发表主题
不能 在这个版面回复主题
不能 在这个版面编辑帖子
不能 在这个版面删除帖子
不能 在这个版面提交附件

前往 :  
本站点为公益性站点,用于推广开源自由软件,由 DiaHosting VPSBudgetVM VPS 提供服务。
我们认为:软件应可免费取得,软件工具在各种语言环境下皆可使用,且不会有任何功能上的差异;
人们应有定制和修改软件的自由,且方式不受限制,只要他们自认为合适。

Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
简体中文语系由 王笑宇 翻译