线上系统为centos7.2 本地开发为windows10; 本地开发在config.prod.js设置maxage后通过npm start启动项目后maxage正常得到修改; 而在线上在config.prod.js设置 停掉在npm start启动仍然是一年,静态资源这些没有使用egg-view-assets 这个 小项目 想着怎么简单怎么来 奇怪的是在线上无论如何设置都不生效
[eggjs/egg]线上egg-static默认maxAge无论在项目的config目录下的config.prod.js和config.default.js中设置均不生效
回答
就很奇怪 当我在新建了一个文件后 或者 别的操作后 修改的maxage又生效了 我发现他不在是一年 而是设置的30天............ 之前重启了无数遍都没有生效
测试浏览器:火狐浏览器 控制台开启禁用缓存
config.defgault.js egg-static配置:
config.static = { prefix: '/', dir: path.join(appInfo.baseDir, 'app/public'), maxAge: 2100000, };
config.prod.js :
config.static = { prefix: '/', dir: path.join(appInfo.baseDir, 'app/public'), maxAge: 1036800, };
此配置在windows下通过npm start启动 在f12可以看到响应头:
cache-control | public, max-age=1036800
通过npm run dev启动可以看到响应头:
cache-control | public, max-age=2100000
也就是或在windows环境下设置的是百分百正常生效的
但是同样的代码放到CentOs7.2的服务器端npm start运行后 响应头仍然为一年,
因为只是涉及了一个静态文件需要更改,所以不得已而为之我将这个文件名由index.html 改为index_new.html 后 , 想要曲线救国,便在nginx添加了 location =/index.html{ proxy_pass https://www.hosts.com/index_new.html; }
后,我确实曲线救国成功了,但是我惊奇的发现,所有的静态文件(是所以的静态文件)
的max-age变更为了我所设置的1036800,当我再次尝试修改任意一个静态文件的内容以及重新修改了max-age后 通过重启项目后我发现 npm start启动后max-age仍然不是我最新设置的 也就是说我也不知道在什么情况下触发了他更新max-age
跟什么操作系统啥都的没关系。
也不要用浏览器去测试,直接 curl。
还是没看懂你的更新是啥意思,如果已经写入到用户端了,肯定是不会更新的了,因为 mageAge 一年了,它只会在一年后再重新发起,这是 HTTP 协议的规定。
如果怀疑 config 没生效,可以检测机器上的 run/application.json 和 run/application_meta.json 文件看看 static 配置是否正确覆盖了,具体看下 FAQ 文档。
是的 我看了这个 run/application.json run/application_meta.json 本地电脑上的是设置的maxage 而服务器上的仍然是一年 因为我测试火狐浏览器控制台开启禁用缓存(就相当于ctrl+f5)所以不存在说是写到用户端了 curl也是一年 但是奇怪的就是 我来来回回重启了很多次 都不生效 但有一次他生效了 就是我上边说的 我在public下新建了个index_new.html文件后 重启生效了 我想复现,再次尝试创建了一个新的文件但是又没有生效新的 可是我本地电脑直接就会生效 代码是一模一样的代码....
直接提供可复现的最小代码库看吧,空对空聊没啥意义。然后再描述清楚整个操作步骤和非预期的是什么,还是没看懂你具体问题在哪。
发现有同样问题,在本地win10下maxage能正常设置,但在Ubuntu下还是一年
需要一个可复现的例子