1

我有一個雲存儲文件在時間上凍結,並且不會預算。到目前爲止,我有:谷歌雲端存儲文件在多次更新/刪除後卡住

  • 回憶靜態文件(Django的),並做了一個rsync的更新

  • 刪除有問題的靜態文件,想起靜態文件和做了rsync的更新

  • 刪除雲存儲控制檯中的文件並重新執行

  • 刪除了整個存儲區並製作了另一個存儲區,並將所有85個靜態文件再次rsy到其上

我最初幾次改變了靜態文件,收集了它們,rsynced,它立即起作用。現在我有這一行

var URL = "http://%/api/recipes/delete/&/".replace("%", API_BASE).replace("&", recipe_id); 

滯留在這個桶裏。在Django中,我的文件正確讀取了

var URL = "/api/recipes/delete/&/".replace("&", recipe_id); 

更改被檢入到git中。

該存儲API根本沒有更新,即使在我刪除文件後,該文件仍然在服務中。我刪除了整個存儲桶之後,該文件仍在服務,這看起來像一個錯誤。該文件是:

http://storage.googleapis.com/homebrew-api-static-bucket/static/main/index.js

然而,如果我認爲從雲存儲控制檯中的文件,我得到了正確的文件。

所以即使該文件是在桶正確的,我的應用程序使用的文件超過2小時

我所服務的文件中index.html等之後仍然過時:

<script src="{% static "main/index.js" %}" type='text/javascript'></script> 

settings.py

STATIC_ROOT = os.path.join(BASE_DIR, 'static') 

STATIC_URL = 'http://storage.googleapis.com/homebrew-bucket/static/' 

我的想法,如果甚至刪除和改造整個鬥不會改變任何東西。

回答

3

GCS提供強大的讀寫後一致性。如果您上傳對象的新版本並將其下載回來,您將始終獲得對象的新版本。

但是,默認情況下,當獲取一個可公開讀取的對象時,GCS會響應一個「緩存控制」標頭,允許緩存長達1小時。 Google本身,您的網頁瀏覽器或您與Google之間的某個防火牆可能會根據該標題決定緩存您的對象。您可以通過再次獲取對象並將一些假的URL參數添加到請求末尾來檢查是否存在問題,如「?avoidTheCaches = 1」。

通過將對象的「cacheControl」屬性設置爲「private」或「max-age = 0」,可以防止發生這種情況。您可以將此屬性設置爲上傳的一部分。您也可以修改現有對象的屬性,但是如果資源已被緩存,則必須等待一小時才能看到新版本。

+0

這很有道理。這感覺就像我一直在等待,所以我只是製作了一個名字不同的新桶,並且工作。謝謝布蘭登 – codyc4321