2014年10月6日 星期一

filecache / server模組應用

因為自己寫一個快取太煩亂了,試了一個禮拜未果,太拖framework開發的時間,所以就直接npm找模組來用了...
基本上快取參考後長這樣:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
var cache = {};
 
function regist(type) {
    if (!cache[type]) {
        cache[type] = {};
    }
}
 
function get(type, key) {
    if (cache[type] && cache[type][key]) {
        return cache[type][key];
    }
}
 
function put(type, key, val) {
    if (cache[type]) {
        cache[type][key] = val;
    }
}
 
function del(type, key) {
    if (cache[type] && cache[type][key]) {
        cache[type][key] = null;
        delete cache[type][key];
    }
}
 
function query(type, key) {
    if (cache[type] && cache[type][key]) {
        return true;
    } else {
        return false;
    }
}
module.exports = {
    regist: regist,
    get: get,
    put: put,
    del: del,
    query: query
};

以上參考自IT幫 : 本篇 : http://ithelp.ithome.com.tw/question/10077753
但是套上去總是會有些問題... 所以我就參考了filecache 這個模組。

Filecache NPM : https://www.npmjs.org/package/filecache

先來安裝:
npm install filecache
您可以先到node_modules底下filecache有個example, 可以執行一下node server.js 開啟 localhsot:8081

之後看一下官方寫的一串example使用方式:
1
2
3
4
5
6
var filecache = require('filecache');
 
filecache('./www', function(err, cache) {
 
    console.log(cache['/getway.txt'].toString())
});

取得cache的file會傳回一個buffer, 用toString()把他換掉,然後我習慣加分號 ';'

先建立一個www資料夾,裡面放一個 getway.txt 裡面寫些字在執行

OK! 我來實現一下利用filecache模組來建立一個有快取的伺服器:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
var filecache = require('filecache')
var http = require('http');
var url = require('url');
 
var basewww = '/www';
var dirpath = __dirname + basewww;
 
http.createServer(function(req,res){
 var urlobj = url.parse(req.url);
 
  filecache(dirpath, function(err, cache) {
   res.writeHead(200,{'Content-Type':'text/html'});
   res.end(cache[urlobj.pathname]);
  });
}).listen(8011);
,應該成功了!
© Mac Taylor, 歡迎自由轉貼。
Background Email Pattern by Toby Elliott
Since 2014