From e861e6e54969efb9ed42c65d3e3a322844f8e8c9 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=83=B3=E5=BD=93=E5=BD=93?= <donghua.yan@alipay.com>
Date: Wed, 27 Aug 2014 00:47:52 +0800
Subject: [PATCH 1/4] Disable caching

---
 lib/requestHandler.js | 10 ++++++++++
 1 file changed, 10 insertions(+)

diff --git a/lib/requestHandler.js b/lib/requestHandler.js
index 211798d..3f7c27d 100644
--- a/lib/requestHandler.js
+++ b/lib/requestHandler.js
@@ -7,6 +7,7 @@ var http  = require("http"),
     color          = require("colorful"),
     sleep          = require("sleep"),
     Buffer         = require('buffer').Buffer,
+    ChunkedStream  = require("chunked"),
     httpsServerMgr = require("./httpsServerMgr");
 
 var httpsServerMgrInstance = new httpsServerMgr();
@@ -115,7 +116,9 @@ function userRequestHandler(req,userRes){
         var proxyReq = (ifHttps ? https : http).request(options, function(res) {
             userRes.writeHead(res.statusCode,mergeCORSHeader(req.headers,res.headers));
             if(callback){
+                res = new ChunkedStream(res);
                 res.on('data',function(chunk){
+                    console.log("chunk",chunk);
                     userRes.write(chunk);
                 });
                 res.on('end',function(){
@@ -227,6 +230,13 @@ function mergeCORSHeader(reqHeader,originHeader){
     targetObj["access-control-allow-methods"]     = "GET, POST, PUT";
     targetObj["access-control-allow-headers"]     = reqHeader['access-control-request-headers'] || "-___-||";
 
+    // Disable caching
+    // If the response status is 304 not modified, the data event of response will not emmit
+    targetObj["Transfer-Encoding"]                = "chunked"
+    targetObj["Cache-Control"]                    = "no-cache, no-store, must-revalidate";
+    targetObj["Pragma"]                           = "no-cache";
+    targetObj["Expires"]                          = 0;
+
     return targetObj;
 }
 

From 83dfab56c1ea5b0d71b05bd2f4634f0a3e30a482 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=83=B3=E5=BD=93=E5=BD=93?= <donghua.yan@alipay.com>
Date: Wed, 27 Aug 2014 00:47:52 +0800
Subject: [PATCH 2/4] Disable caching

---
 lib/requestHandler.js | 7 +++++++
 1 file changed, 7 insertions(+)

diff --git a/lib/requestHandler.js b/lib/requestHandler.js
index 211798d..31ee562 100644
--- a/lib/requestHandler.js
+++ b/lib/requestHandler.js
@@ -227,6 +227,13 @@ function mergeCORSHeader(reqHeader,originHeader){
     targetObj["access-control-allow-methods"]     = "GET, POST, PUT";
     targetObj["access-control-allow-headers"]     = reqHeader['access-control-request-headers'] || "-___-||";
 
+    // Disable caching
+    // If the response status is 304 not modified, the data event of response will not emmit
+    targetObj["Transfer-Encoding"]                = "chunked"
+    targetObj["Cache-Control"]                    = "no-cache, no-store, must-revalidate";
+    targetObj["Pragma"]                           = "no-cache";
+    targetObj["Expires"]                          = 0;
+
     return targetObj;
 }
 

From 659a86234132f12a2c8a79fc59b24eda75c78dad Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=83=B3=E5=BD=93=E5=BD=93?= <donghua.yan@alipay.com>
Date: Wed, 27 Aug 2014 00:59:49 +0800
Subject: [PATCH 3/4] Disable caching

---
 lib/requestHandler.js | 3 ---
 1 file changed, 3 deletions(-)

diff --git a/lib/requestHandler.js b/lib/requestHandler.js
index 3f7c27d..31ee562 100644
--- a/lib/requestHandler.js
+++ b/lib/requestHandler.js
@@ -7,7 +7,6 @@ var http  = require("http"),
     color          = require("colorful"),
     sleep          = require("sleep"),
     Buffer         = require('buffer').Buffer,
-    ChunkedStream  = require("chunked"),
     httpsServerMgr = require("./httpsServerMgr");
 
 var httpsServerMgrInstance = new httpsServerMgr();
@@ -116,9 +115,7 @@ function userRequestHandler(req,userRes){
         var proxyReq = (ifHttps ? https : http).request(options, function(res) {
             userRes.writeHead(res.statusCode,mergeCORSHeader(req.headers,res.headers));
             if(callback){
-                res = new ChunkedStream(res);
                 res.on('data',function(chunk){
-                    console.log("chunk",chunk);
                     userRes.write(chunk);
                 });
                 res.on('end',function(){

From 98599de8921f5274523503275218ffa9a4eea134 Mon Sep 17 00:00:00 2001
From: =?UTF-8?q?=E6=83=B3=E5=BD=93=E5=BD=93?= <donghua.yan@alipay.com>
Date: Wed, 27 Aug 2014 09:02:35 +0800
Subject: [PATCH 4/4] res.pipe(userRes,{end:false});

---
 lib/requestHandler.js | 18 +++++++-----------
 1 file changed, 7 insertions(+), 11 deletions(-)

diff --git a/lib/requestHandler.js b/lib/requestHandler.js
index 31ee562..72460b9 100644
--- a/lib/requestHandler.js
+++ b/lib/requestHandler.js
@@ -114,17 +114,13 @@ function userRequestHandler(req,userRes){
 
         var proxyReq = (ifHttps ? https : http).request(options, function(res) {
             userRes.writeHead(res.statusCode,mergeCORSHeader(req.headers,res.headers));
-            if(callback){
-                res.on('data',function(chunk){
-                    userRes.write(chunk);
-                });
-                res.on('end',function(){
-                    callback(userRes);
-                    userRes.end();
-                });                
-            }else{
-                res.pipe(userRes);
-            }
+
+            res.pipe(userRes,{end:false});
+            res.on('end',function(){
+                if(callback)callback(userRes);
+                userRes.end();
+            });
+
         });
 
         proxyReq.on("error",function(e){