【发布时间】:2014-11-18 10:14:34
【问题描述】:
更新我的网站时,我将服务器切换到“更新”模式。对主域 (example.com) 的任何请求都会导致静态页面显示该站点正在更新。但是如何响应其他通常有效但正在更新的请求,例如图像、表单提交等?
应该返回哪个 HTTP 代码以便客户端知道请求暂时不可用?
4XX 不适合,因为它不是用户错误。 5XX 似乎不合适,因为没有内部错误。除了显示维护页面之外,它故意不服务任何请求
3XX 似乎不合适,因为文件(图像、页面等)没有移动到任何地方。它们只是暂时无法访问。
也许为了更好地理解我的意思,如果你曾经在 Keynote 期间访问过苹果网站,他们会将其离线进行维护,并显示一个黄色的“粘性”图片,表示他们很快就会回来。
编辑:对于主页,我不想返回 503,因为它不会显示在浏览器中。但对于正在更新的其他资产来说,这是有道理的。
【问题讨论】:
-
503怎么了?
-
好吧,我不想在主页上显示网站正在更新的消息,但也不想发送 503,因为那样人们可能会认为网站已关闭,因为503 不会在浏览器中呈现。我想只为正在更改的资产发送 503 是有意义的,而不是为主页发送 503。
-
我认为这不是问题。您可以拥有仍然显示 HTML 的错误状态的页面。
-
当错误为 4xx(客户端错误)时,我看到页面正在呈现。但在 5xx 的情况下,我没有。所以我想对于所有资产我应该只返回一个 503,但对于主页一个 200
-
这不是一个好主意。如果该页面想要显示任何图像(徽标、横幅等),它将无法显示,并且用户只会看到占位符。用户体验不好。