node响应头缓存设置

我把react项目分成4个板块,在路由的顶层

今天在手机上打开react项目的时候,发现平级路由跳转时某一个图片较多的板块图片总是渲染得很慢,这分明是重新发起请求了。

然后我先查一下react-router是否有什么我还没了解到的问题,可是只查到有人说动态修改查询参数的时候不重新渲染,以及“同级路由跳转理所当然会重新渲染,必要时把某些组件挂载为子路由组件”之类的。

然后我打开我的node服务器查看,发现果然每次跳转时服务器都log下了一堆请求,这就奇怪了。

然后我查了下,发现原来是我的服务端脚本里没有对图片文件的cache control设置,所以默认都没有设置缓存。。。晕菜~~~

在某些资源的响应报头添加cache-control就好了

然后再打开项目跳转,缓存到本地了...

 1         case '.jpg':
 2         case '.png':
 3         case '.gif':
 4         fs.readFile('.'+pathname,(err,data)=>{
 5             if(err) console.log(err);
 6              res.writeHead(200, {
 7                "Content-Type": {
 8                    ".gif":"image/gif",
 9                    ".png":"image/png",
10                    ".jpg":"image/jpeg",
11                }[ext],
12                "Cache-Control":"max-age=100000"
13              });
14              res.write(data);
15              res.end();
16         });
17         break;
18         case '.html':
19         case '.css':
20         case '.js':
21         fs.readFile('.'+pathname,(err,data)=>{
22             if(err) console.log(err);
23              res.writeHead(200, {
24                "Content-Type": {
25                ".html":"text/html",
26                ".css":"text/css",
27                ".js":"application/javascript",
28                }[ext],
29                "Cache-Control":"max-age=600"
30              });
31              res.write(data);
32              res.end();
33         });
34         break;
35         case 'ico':break;
原文地址:https://www.cnblogs.com/alan2kat/p/7761991.html