3

我有一个非常奇怪的情况,我的应用程序的陈旧版本仅在通过其 CNAME 别名访问它时才被提供。

该应用程序是使用 Webpack 构建并托管在 Zeit NOW 上的静态节点应用程序。如果我使用直接的 Zeit URL 访问它,我将获得最新版本和正确的 JS 资产:

https://nates-app.now.sh/index.html -> https://nates-app.now.sh/client/index.eb53e753.js (current)

在 AWS Route53 中,我将 CNAME 设置为别名www.nates-app.comhttps://nates-app.now.sh. 但是,将我的浏览器指向https://www.nates-app.com一个过时的index.html. 更奇怪的是,陈旧的 index.html 页面需要陈旧的 JS 和 CSS 资产,这些资产也被成功返回:

https://www.nates-app.com/index.html -> https://www.nates-app.com/client/index.f64812dd.js (stale)

旧版本已超过 48 小时。

挖掘显示几乎相同的结果。dig nates-app.now.sh导致以下 ANSWER 部分:

;; ANSWER SECTION:
nates-app.now.sh.   60  IN  A   1.2.3.4
nates-app.now.sh.   60  IN  A   4.3.2.1

dig www.nates-app.com产生相同的输出,只有一个(预期的)添加显示该ANSWER部分中的 CNAME:

;; ANSWER SECTION:
www.nates-app.com.  300 IN  CNAME   https://nates-app.now.sh.
nates-app.now.sh.   60  IN  A   1.2.3.4
nates-app.now.sh.   60  IN  A   4.3.2.1

我没有将 AWS Cloudfront 或任何其他 CDN 用于静态资产。

我显然已经清除了浏览器的缓存,甚至关闭和打开了我的 VPN。一位同事在从不同的 ISP 访问 Internet 时看到了同样的情况。

那么,万维网中的什么可以缓存我网站的 HTML 和随附资产的(非常)旧版本?

4

2 回答 2

0

很奇怪,当我遇到类似的问题时,解决方案总是刷新浏览器缓存或使用隐身模式。你是否还有同样的经历

于 2019-11-25T03:56:56.567 回答
0

有几件事:

Zeit 不支持将 aCNAME直接指向您的 Zeit 子域。您需要在 Zeit 仪表板中配置您的域并设置验证文本记录并将您的分配CNAMEalias.zeit.co. 服务器将alias.zeit.co您路由CNAME到最新的部署。

也有可能,在 Zeit 的配置中,您的域名仍指向项目中较旧的部署。Zeit 不会自动将域名重新分配给新部署,除非您正在进行生产部署,即,now --prod或者您已将其配置为将推送到 gitmaster分支视为生产部署。在您的仪表板中,单击Projects然后单击您的项目名称。如果您没有在最近的部署中看到您的域,那可能是您的罪魁祸首。

于 2019-12-01T15:56:08.927 回答