Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

线上egg-static默认maxAge无论在项目的config目录下的config.prod.js和config.default.js中设置均不生效 #4681

Open
sunny-fun opened this issue May 26, 2021 · 9 comments

Comments

@sunny-fun
Copy link

线上系统为centos7.2 本地开发为windows10;
本地开发在config.prod.js设置maxage后通过npm start启动项目后maxage正常得到修改;
而在线上在config.prod.js设置 停掉在npm start启动仍然是一年,静态资源这些没有使用egg-view-assets 这个 小项目 想着怎么简单怎么来 奇怪的是在线上无论如何设置都不生效

@sunny-fun
Copy link
Author

就很奇怪 当我在新建了一个文件后 或者 别的操作后 修改的maxage又生效了 我发现他不在是一年 而是设置的30天............ 之前重启了无数遍都没有生效

@egg-bot
Copy link

egg-bot commented May 27, 2021

Hello @xbw187. Please provide a reproducible example following the instruction.

Issues labeled by Need Reproduce will be closed if no activities in 7 days.


@xbw187,请根据这个说明提供最小可复现代码。

如果在 7 天内没有进展会被自动关闭。

@sunny-fun
Copy link
Author

sunny-fun commented May 27, 2021

测试浏览器:火狐浏览器 控制台开启禁用缓存
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

@atian25
Copy link
Member

atian25 commented May 27, 2021

跟什么操作系统啥都的没关系。

也不要用浏览器去测试,直接 curl。

还是没看懂你的更新是啥意思,如果已经写入到用户端了,肯定是不会更新的了,因为 mageAge 一年了,它只会在一年后再重新发起,这是 HTTP 协议的规定。

@atian25
Copy link
Member

atian25 commented May 27, 2021

如果怀疑 config 没生效,可以检测机器上的 run/application.json 和 run/application_meta.json 文件看看 static 配置是否正确覆盖了,具体看下 FAQ 文档。

@sunny-fun
Copy link
Author

如果怀疑 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文件后 重启生效了 我想复现,再次尝试创建了一个新的文件但是又没有生效新的 可是我本地电脑直接就会生效 代码是一模一样的代码....

@atian25
Copy link
Member

atian25 commented May 27, 2021

直接提供可复现的最小代码库看吧,空对空聊没啥意义。然后再描述清楚整个操作步骤和非预期的是什么,还是没看懂你具体问题在哪。

@CoderIvan
Copy link

发现有同样问题,在本地win10下maxage能正常设置,但在Ubuntu下还是一年

@hyj1991
Copy link
Member

hyj1991 commented Aug 5, 2021

需要一个可复现的例子

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Projects
None yet
Development

No branches or pull requests

5 participants