https://github.com/joyent/node/wiki/modules#wiki-web-frameworks-static

では、様々な目的で利用するためのスタティックファイル配信用モジュールが紹介されている。実運用に使用する場合は特に、それぞれのモジュールが十分に成熟しているかを確かめたほうが良い。

nodo-staticはキャッシュ機能を備えた、成熟したモジュール。RFC2616(HTTP1.1)に準拠していて、基本的機能をはじめ、サーバサイドおよびクライアントサイドのキャッシュの制御や、ストリームを使ったコンテンツ配信、相対パスやヌルバイトのフィルタなど、一連の機能を備えている。


Nodeクックブック p.28
ブラウザを使ってサーバスクリプトをテストする際、予期しないリクエストがサーバに送られることがある。このような場合の多くは、ブラウザがfavicon.icoのアイコンファイルをリクエストしているもので、通常は問題にならない。もしfavicon.icoが存在しないことで何らかの問題を引き起こす場合は、以下のコードをserver.jsのhttp.createServerコールバック関数の最初に追加することにより問題を回避できる。

server.js
if(request.url === '/favicon.ico'){
response.end();
return;
}

このコードは空のレスポンスをブラウザに返すが、ブラウザに対してより礼儀正しく振る舞う場合は、response.writeHead(404)をresponse.endの前に記述して404エラーを返すようにする。

Nodeクックブック p.12
スタティックファイルを配信する
解説

 http.createServerでまずサーバを生成し、サーバで探すファイル名を格納するlookup変数を宣言する。lookup変数に値を割り当てる際には論理和演算子(||)を使っている。この演算子を使うことによって、path.basenameの値が存在しない場合にデフォルトの値を代わりに設定できる。
 次に、lookup変数に格納したbasenameにcontentディレクトリを付与して相対パスを作り、f変数に割り当てる。そして、fs.existsでその相対パスにファイルが存在するかどうかを判定する。
 ファイルが存在する場合は、fs.readFileでファイルを非同期で読み込む。ファイル読み込み時にエラーが発生した場合は、クライアントに500サーバエラーを返してfs.readFileコールバックから離脱する。この挙動を確認したい場合は、ファイルのパーミッションを変更して読み込みができないようにする。

ターミナル
$ chmod -r content/index.html

これによりファイル読み込み時にエラーが発生し、500サーバエラーが返される。再度このファイルを読み込めるようにするには以下のコマンドを実行する。

ターミナル
$ chmod +r content/index.html

ファイルに無事アクセスできた場合は、mimeTypeマッピングオブジェクトからファイルの拡張子に対応するContent-Typeを探し当て、HTTPヘッダを書き、ファイルから取得したデータをレスポンスに加えて送る。リスエストしたファイルが見つからない場合は、上記の処理は行わずに404エラーを返す。

server.js
var http = require('http');
var path = require('path');
var fs = require('fs');

var mimeTypes = {
'.js': 'text/javascript',
'.html': 'text/html',
'.css': 'text/css'
};
http.createServer(function(request,response){
if(request.url === '/favicon.ico'){
response.end();
return;
}
var lookup = path.basename(decodeURI(request.url))||'index.html',
f = 'content/' + lookup;
fs.exists(f,function(exists){
// console.log(exists ? lookup + "は存在します。" : lookup + "は存在しません。");
if(exists){
fs.readFile(f,function(err,data){
if(err){
response.writeHead(500);
response.end('Server Error!');
return;
}
var headers = {'Content-Type':mimeTypes[path.extname(f)]};
response.writeHead(200,headers);
response.end(data);
});
return;
}
response.writeHead(404);
response.end('ページが見つかりません!');
});
}).listen(8020);


Nodeクックブック p.11

ブレンドレイヤー   シュミレーター


背景が透ける方が重くなる

 緑 背景が設定されている 軽い

 赤 背景が透けている   重い

UNIX

-rw-r--r--@ 1 mimoe  staff  0  5 31 14:15 known_hosts

r 読む  4

w 書く  2

x 実行  1


owner

group

other


例えば⬆の場合、-rw-r--r-- ➡ 744


d ディレクトリ


-rw-r--r--  1 mimoe  staff   411 11 15 11:05 id_rsa.pub

chmod 600 .ssh/id_rsa.pub

こんな風に変える

-rw-------  1 mimoe  staff   411 11 15 11:05 id_rsa.pub