You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cordova.apache.org by bh...@apache.org on 2014/09/24 20:22:35 UTC
git commit: CB-7572 Serve - respond with 304 when resource not
modified
Repository: cordova-lib
Updated Branches:
refs/heads/master 2aace451a -> 3ead61c5e
CB-7572 Serve - respond with 304 when resource not modified
Project: http://git-wip-us.apache.org/repos/asf/cordova-lib/repo
Commit: http://git-wip-us.apache.org/repos/asf/cordova-lib/commit/3ead61c5
Tree: http://git-wip-us.apache.org/repos/asf/cordova-lib/tree/3ead61c5
Diff: http://git-wip-us.apache.org/repos/asf/cordova-lib/diff/3ead61c5
Branch: refs/heads/master
Commit: 3ead61c5e3ed9a78f8951a6d60a524a5e85649a9
Parents: 2aace45
Author: Bryan Higgins <bh...@blackberry.com>
Authored: Fri Sep 19 14:02:12 2014 -0400
Committer: Bryan Higgins <bh...@blackberry.com>
Committed: Wed Sep 24 14:21:46 2014 -0400
----------------------------------------------------------------------
cordova-lib/package.json | 1 +
cordova-lib/src/cordova/serve.js | 20 ++++++++++++++++++++
2 files changed, 21 insertions(+)
----------------------------------------------------------------------
http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/3ead61c5/cordova-lib/package.json
----------------------------------------------------------------------
diff --git a/cordova-lib/package.json b/cordova-lib/package.json
index 72d376f..6b4ebfc 100644
--- a/cordova-lib/package.json
+++ b/cordova-lib/package.json
@@ -36,6 +36,7 @@
"underscore": "1.4.4",
"xcode": "0.6.7",
"cordova-js": "3.6.4",
+ "d8": "0.4.4",
"unorm": ">=1.3"
},
"devDependencies": {
http://git-wip-us.apache.org/repos/asf/cordova-lib/blob/3ead61c5/cordova-lib/src/cordova/serve.js
----------------------------------------------------------------------
diff --git a/cordova-lib/src/cordova/serve.js b/cordova-lib/src/cordova/serve.js
index 4d65421..26c114b 100644
--- a/cordova-lib/src/cordova/serve.js
+++ b/cordova-lib/src/cordova/serve.js
@@ -35,6 +35,11 @@ var cordova_util = require('./util'),
mime = require('mime'),
zlib = require('zlib');
+//extends Date object
+//used only for RFC 2822 formatting
+require('d8');
+require('d8/locale/en-US');
+
function launchServer(projectRoot, port) {
var server = http.createServer(
function(request, response) {
@@ -52,6 +57,17 @@ function launchServer(projectRoot, port) {
response.end();
return '';
}
+ function do304() {
+ console.log('304 ' + request.url);
+ response.writeHead(304, {'Content-Type': 'text/plain'});
+ response.end();
+ return '';
+ }
+ function isFileChanged(path) {
+ var mtime = fs.statSync(path).mtime,
+ itime = request.headers['if-modified-since'];
+ return !itime || new Date(mtime) > new Date(itime);
+ }
function doRoot() {
var p;
response.writeHead(200, {'Content-Type': 'text/html'});
@@ -148,6 +164,8 @@ function launchServer(projectRoot, port) {
}
response.write('</ul>');
response.end();
+ } else if (!isFileChanged(filePath)) {
+ do304();
} else {
var mimeType = mime.lookup(filePath);
var respHeaders = {
@@ -163,6 +181,8 @@ function launchServer(projectRoot, port) {
respHeaders['content-encoding'] = 'deflate';
readStream = readStream.pipe(zlib.createDeflate());
}
+
+ respHeaders['Last-Modified'] = new Date(fs.statSync(filePath).mtime).format('r');
console.log('200 ' + request.url);
response.writeHead(200, respHeaders);
readStream.pipe(response);