簡體   English   中英

GCP App Engine - 如何提供最新文件

[英]GCP App Engine - How to serve newest files

我正在使用具有自動縮放功能的 GCP App Engine。

如果我部署了新版本的應用程序代碼(Python 3 Flask 應用程序)並為控制和測試目的進行了簡單更改,假設我向其中一個 .js 文件添加了注釋,但我在部署后的瀏覽器。

新版本的應用程序為我提供了 100% 的流量。 當我查看該版本的源代碼時,我可以在其中看到注釋,但是當我清除瀏覽器緩存並訪問該頁面時,我只會得到該頁面的舊版本(沒有 .js 中的注釋)。

我嘗試在 app deploy 命令中使用 --promote 和 --no-cache 值,但沒有用。 我已經添加了:

default_expiration: "0d 0h 0m 0s"

到app.yaml

我還打開了存儲帳戶的 object 版本控制,應用程序引擎使用它來嘗試確保只有一個文件版本可供服務 - 仍然沒有用。

我用來部署的命令是:

run: "gcloud app deploy app.yaml --quiet --promote --no-cache"

我不明白為什么簡單地部署應用程序的新版本並讓應用程序引擎提供最新文件會如此困難; 我一定做錯了什么,但看不到什么。

將不勝感激任何指針。

文件被緩存(即使是很短的時間,有時需要一些時間來清除它)。

訣竅是使每個部署的 url(對於 static 文件)唯一。 這樣,瀏覽器在每次部署后加載一個“不同的”url。 例如,對於所有 static 元素,您可以將 append 環境變量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}}"

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM