我正在使用具有自動縮放功能的 GCP App Engine。
如果我部署一個新版本的應用程式代碼(Python 3 Flask 應用程式),并為控制和測驗目的進行了簡單的更改,假設我向其中一個 .js 檔案添加了注釋,我沒有看到對檔案中的更改部署后的瀏覽器。
新版本的應用程式為我提供了 100% 的流量。當我查看該版本的源代碼時,我可以在其中看到注釋,但是當我清除瀏覽器快取并訪問該頁面時,我只會得到該頁面的舊版本(沒有 .js 中的注釋)。
我嘗試在 app deploy 命令中使用 --promote 和 --no-cache 值,但沒有用。我已經添加了:
default_expiration: "0d 0h 0m 0s"
到 app.yaml
我還打開了存盤帳戶的物件版本控制,應用程式引擎使用它來嘗試確保只有一個檔案版本可供服務 - 仍然沒有用。
我用來部署的命令是:
run: "gcloud app deploy app.yaml --quiet --promote --no-cache"
我不明白為什么簡單地部署應用程式的新版本并讓應用程式引擎提供最新檔案會如此困難;我一定做錯了什么,但看不到什么。
將不勝感激任何指標。
uj5u.com熱心網友回復:
檔案被快取(即使是很短的時間,有時需要一些時間來清除它)。
訣竅是使每個部署的 url(用于靜態檔案)唯一。這樣,瀏覽器會在每次部署后加載一個“不同的”url。例如,您可以將環境變數附加CURRENT_VERSION_ID到所有靜態元素的 url。這意味著有類似的東西(假設 Python/Jinja2)
src="/static/js/my_js_file.js?{{CURRENT_VERSION_ID}}"
os.environ['CURRENT_VERSION_ID']每次部署的更改。此屬性有可能在較新的運行時中不可用。如果是這樣,只需轉儲環境變數并查找始終存在但值更改的屬性(例如GAE_INSTANCE)。
您也可以在每次部署您的應用程式時生成一個亂數并使用它來代替,即
src="/static/js/my_js_file.js?{{RANDOM_NUMBER}}"
轉載請註明出處,本文鏈接:https://www.uj5u.com/qiye/507348.html
