你的已發布應用程式現在在重新發布時仍保持上線
當你在 Mythex 上重新發布應用程式時,你的上線網站現在會持續提供先前的版本,直到新的建置準備好才切換過去。在這項變更之前,重新發布會在整個建置期間讓網站下線:訪客會看到「This published app is offline or the link was not found」,大約一分鐘後,重新整理頁面,同一個頁面又能正常使用。我們也修正了另外兩種會讓上線應用程式被錯誤地視為離線的情況。
1. 重新發布不再讓你的網站停機
在幕後,每個已發布的應用程式都有一筆紀錄,指出應該提供哪個建置。重新發布會重用這筆紀錄,並在整個期間把它標記為「建置中」,而我們邊緣節點中負責路由訪客的部分,只會提供被標記為「上線」的紀錄。因此每次重新發布,網站都會消失,直到建置完成為止。我們在一個小型測試應用程式上重現了這個問題:每次重新發布大約下線 50 秒。
現在,當對已上線的應用程式開始重新發布時,這筆紀錄會記住先前的建置存在,並持續指向它。邊緣節點在新建置進行期間提供先前的建置,而指標只有在新建置成功時才會移動過去。如果新建置失敗,你的訪客完全不會察覺,舊版本只是繼續提供服務。
首次發布,或重新發布一個已暫停或已取消發布的應用程式,仍然要等建置完成後才會上線,因為那時沒有先前的版本可以顯示。
2. 短暫的異常不再顯示為「找不到」
在你的已發布應用程式前面的服務,會向我們的 API 詢問每個網站位於何處。過去,它會把任何不成功的回應(例如暫時的伺服器錯誤或中斷的連線)都視為「這個網站不存在」,並顯示離線頁面。一秒鐘後重新整理又能正常運作,這讓人很困惑。
現在只有真正的「找不到」回應才算找不到:
- 任何其他失敗都會重試一次。
- 如果仍然失敗,邊緣節點會使用最後一次已知的正確回應提供網站,最多一小時。
- 只有在從未取得過任何回應時,它才會顯示「暫時無法使用」的頁面,絕不會顯示「找不到」。
自訂網域也會同時詢問我們的正式環境與預備環境系統,因此即使預備伺服器很慢,也絕不會拖累正式環境的網域。
3. 暫停的應用程式會說明自己已暫停
已發布的應用程式是以你的點數餘額運作的。如果點數用完,應用程式會被暫停,直到你加值為止,而加值後它會自動恢復。但過去,已暫停的應用程式看起來和已刪除的應用程式一模一樣。
現在,造訪已暫停應用程式的訪客會看到 「This app is paused」,並附上讓擁有者回到應用程式的方式,而且這個回應絕不會被快取,因此應用程式一恢復,就能立即再次存取。如果應用程式因其他原因無法使用,訪客會看到「This app isn't available」,但不會被告知原因。
為什麼這很重要
已發布的應用程式是你分享出去的東西:放在個人簡介連結中、名片上,或給你的第一批客戶。它應該表現得像一個真正的網站:在你持續改進時保持上線,能夠撐過短暫的異常,並且在暫停時誠實地告訴大家。
更多關於發布的說明請參閱文件:如何發布與託管限制。至於同一個理念在基礎設施方面的做法,請參閱我們如何讓自己的部署達到零 502 錯誤。