const http = require('http')
const url = require('url')
const fs = require('fs')
var getContentType = function(pathname) {
switch(pathname) {
case '/index.html' : {
return 'text/html;charset=utf-8';
}
case '/photo.jpg' : {
return 'img/jpg';
}
}
}
var server = http.createServer((req, res) => {
// http://localhost:3000/index.html
var pathname = url.parse(req.url).pathname;
if(pathname == '/favicon.ico') {
return
}
var realpath = 'static' + pathname;
var MaxAge = 10;
res.setHeader('Cache-Control' , 'max-age=' + MaxAge);
var now = new Date();
var date = (now.getTime() + MaxAge*1000);
now.setTime(date);
res.setHeader('Expires', now.toUTCString());
fs.stat(realpath, function(err, stats) {
var lastTime = stats.mtime.toUTCString();
res.setHeader('last-Modified', lastTime);
fs.readFile(realpath, function(errs, data) {
if(errs) {
res.writeHead(404, {'Content-Type':'text/html;charset=utf-8'});
res.write('404');
res.end();
} else {
if(req.headers['if-modified-since'] && req.headers['if-modified-since'] == lastTime) {
res.writeHead(304, 'Not Modified');
res.end();
} else {
res.writeHead(200, {'Content-Type':getContentType(pathname)});
res.write(data);
res.end();
}
}
})
})
})
server.listen(3000);
这是刷新前
这是十秒内刷新后
为什么index.html文件不是200 from memory cache呢???
10s内不走服务器走缓存, 10s后走服务器,服务器告诉你304没变化好像也没有什么问题吧