Skip to content

Commit 123b6c4

Browse files
committed
Add cache support for local server
1 parent ccc942e commit 123b6c4

File tree

3 files changed

+28
-5
lines changed

3 files changed

+28
-5
lines changed

tests/index.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -33,7 +33,7 @@
3333
var path = require('path');
3434
var program = require('commander');
3535
var local_server = require('./server/server');
36-
36+
3737
//socket server
3838
var net = require('net');
3939
global.server = net.createServer();

tests/server/config.js

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,4 @@
1+
exports.Expires = {
2+
fileMatch: /^(.gif|.png|.jpg|.js|.css)$/ig,
3+
maxAge: 606024365
4+
};

tests/server/server.js

Lines changed: 23 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,9 +2,12 @@ var http = require("http"),
22
url = require("url"),
33
path = require("path"),
44
fs = require("fs"),
5+
config = require('./config');
56
ports = new Array(8123,8124),
67
servers = new Array(ports.length);
78

9+
var res_save = new Array();
10+
811
types = {
912
".css": "text/css",
1013
".gif": "image/gif",
@@ -39,11 +42,25 @@ function request_listener(req, res) {
3942

4043
path.exists(pathname,function(exists){
4144
if(exists){
42-
var content_type = types[path.extname(pathname)] || "text/plain";
43-
res.writeHead(200, {"Content-Type": content_type});
45+
var ext = path.extname(pathname);
46+
var content_type = types[ext] || "text/plain";
47+
48+
res.setHeader("Content-Type", content_type);
4449

45-
fs.readFile(pathname,function (err,data){
46-
res.end(data);
50+
fs.stat(pathname, function (err, stat) {
51+
var last_modified = stat.mtime.toUTCString();
52+
var if_modified_since = "If-Modified-Since".toLowerCase();
53+
res.setHeader("Last-Modified", last_modified);
54+
55+
if (req.headers[if_modified_since] && last_modified == req.headers[if_modified_since]) {
56+
res_save.push({"status": 304, 'pathname':req.url.slice(1)});
57+
res.writeHead(304, "Not Modified");
58+
res.end();
59+
} else {
60+
fs.readFile(pathname,function (err,data){
61+
res.end(data);
62+
});
63+
}
4764
});
4865
} else {
4966
res.writeHead(404, {"Content-Type": "text/html"});
@@ -65,3 +82,5 @@ for (var i = 0; i < ports.length; i++) {
6582
servers[i].on('error', error_handler);
6683
console.log("Server running at http://127.0.0.1:" + ports[i]);
6784
}
85+
86+
exports.res_save = res_save;

0 commit comments

Comments
 (0)