diff --git a/proxy/proxy.js b/proxy/proxy.js
index bcc7f2f81dd02f65689c78f429e2c4f619ea1278..f60eee61c6a0a36560361159ee76888e98fb2e93 100644
--- a/proxy/proxy.js
+++ b/proxy/proxy.js
@@ -2,6 +2,7 @@ const http = require('http');
 
 const PORT = 8080;
 
+// filtering
 const filter = request=>{
     if(request.url==='/good'){
         return true;
@@ -9,23 +10,42 @@ const filter = request=>{
     return false;
 }
 
+let cache = ``;
+
+let lastModified=null;
 const requestListener = (req,res)=>{
     const options = {
         hostname:'localhost',
         port:3000,
-        path:'/'
+        path:'/',
+        headers: {
+            'If-Modified-Since': `${JSON.stringify(lastModified)}`
+        }
     };
+
     if(filter(req)){
         const get = http.get(options,response=>{
             console.log(`statusCode: ${response.statusCode}`);
-            let buffer="";
-            response.on('data',d=>{buffer+=d});
-            response.on('error',err=>{console.log(`error:${err}`)});
-            response.on('end',()=>{
+            if(response.statusCode===304){
                 res.setHeader("Content-Type", "text/html");
                 res.writeHead(200);
-                res.end(buffer);
-            });
+                res.end(cache);
+            }
+            else{
+                let buffer="";
+                // console.log(`Last modified: ${JSON.stringify(response.headers['last-modified']  )}`);
+                lastModified = new Date(JSON.parse(response.headers['last-modified']));
+                console.log(`Last modified; ${lastModified}`);
+                response.on('data',d=>{buffer+=d});
+                response.on('error',err=>{console.log(`error:${err}`)});
+                response.on('end',()=>{
+                    cache=buffer;
+                    res.setHeader("Content-Type", "text/html");
+                    res.writeHead(response.statusCode);
+                    res.end(buffer);
+                });
+            }
+           
         });
     }
     else{
diff --git a/server/server.js b/server/server.js
index 6f948a22ac2361150931070f0e07761445dc2896..9a3d0d806ba14fab67e09b4166d1716c7abe32a5 100644
--- a/server/server.js
+++ b/server/server.js
@@ -2,12 +2,20 @@ const http = require('http');
 const fs = require('fs').promises;
 
 const PORT = 3000;
+const lastModified=(new Date()).toJSON();
 const requestListener = (req,res)=>{
-    fs.readFile('./contents/index.html').then(contents=>{
+    if(req.headers['if-modified-since'] && req.headers['if-modified-since']===JSON.stringify(lastModified)){
+        res.setHeader("Last-Modified",`${JSON.stringify(lastModified)}`);
+        res.writeHead(304);
+        res.end("Not  applicable");
+    }
+
+    else{fs.readFile('./contents/index.html').then(contents=>{
         res.setHeader("Content-Type", "text/html");
+        res.setHeader("Last-Modified",`${JSON.stringify(lastModified)}`);
         res.writeHead(200);
         res.end(contents);
-    });
+    });}
     console.log(req.headers);
 
 }