2012-09-21 65 views
7

我有blob存儲和CDN端點,用於存儲我的靜態內容。 現在我想更新app.js文件,因爲它已被修改,但是當我將此文件寫入Blob時,CDN仍然給我舊的app.js文件。我怎樣才能更新我的app.js文件?或者我必須等到我的緩存不會結束?Windows Azure中的更新文件CDN

+0

我真的也需要這個問題的答案。我試着搞亂緩存控制標題,但不知道如何處理它們。我可以上傳帶有新名稱的文件,並立即顯示,但對現有文件的修改在72小時後仍未顯示。 – Erick

回答

1

CDN很簡單。當請求進入時,它會從源(本例中是BLOB存儲)中獲取內容,然後基於Cache-Control標頭將其緩存一段時間。它將繼續提供相同的內容,直到緩存過期。

沒有辦法告訴CDN儘早過期。

其他人可能會提供更多關於如何處理此問題的有用建議(如查詢字符串參數),但我只是想直接解釋CDN的緩存如何工作。

+0

感謝您的信息。如果緩存控制標題在特定的Blob上爲空,你知道行爲是什麼嗎? – Erick

+0

此信息可能已過時,但有一點啓發式是,CDN會將內容緩存一段時間(現在爲las修改),如果我正確記錄,最長時間爲72小時。因此,如果最後修改的標題指示內容已經過了三個小時,CDN會在接下來的三個小時內將其緩存,然後再次檢查。但請注意,這肯定會發生變化,依靠默認行爲並不是一個好主意。 – smarx

-1

它似乎默認的過期時間是7天。

來源:http://msdn.microsoft.com/en-us/library/azure/gg680306.aspx

斑點是受益於Azure的CDN緩存的大多是那些 在他們的時間生存(TTL)期間頻繁訪問。 Blob 在TTL期間保留在高速緩存中,然後在該時間過後由 Blob服務刷新。然後重複該過程。

你必須控制TTL兩種選擇:

  1. 不要因此利用7天的缺省TTL不設置緩存值。

  2. 精確設置X-MS-BLOB緩存控性能上的認沽斑點,把 阻止列表,或設置一滴性能的要求,或使用Azure的管理 庫設置BlobProperties.CacheControl屬性。設置此 屬性可設置blob的Cache-Control標頭的值。標頭或屬性的 值應以秒爲單位指定適當的值 。例如,要將最大緩存週期設置爲一年 ,可以將請求標頭指定爲x-ms-blob-cache-control: public,max-age = 31556926。有關設置緩存頭的詳細信息,請參閱HTTP/1.1規範 。

1

只要你不能更新其到期前的緩存對象。

https://msdn.microsoft.com/en-us/library/azure/gg680303.aspx

如果您不再希望在Azure的內容分發網絡(CDN),你可以採取以下步驟之一緩存的對象:

  • 對於Azure blob,您可以從公共容器中刪除blob。

  • 您可以使容器變爲私人而不是公開的。有關更多信息,請參閱限制對容器和Blob的訪問。

  • 您可以使用Azure管理門戶來禁用或刪除CDN端點。

  • 您可以修改託管服務以不再響應對該對象的請求。

緩存在CDN中的對象將保持緩存狀態,直到該對象的生存時間到期。當生存時間到期時,CDN將檢查CDN端點是否仍然有效,並且該對象仍可匿名訪問。如果不是,則該對象將不再被緩存。

Azure CDN目前沒有明確的「清除」工具可用。


其他解決方法包括使用僞造或者查詢字符串或新的文件名,如果可能的話。請看這裏:https://stackoverflow.com/a/8773202/908336

0

現在唯一的方法就是聯繫Azure支持,他們將反過來打開Verizon EdgeCast的支持通知單,將文件從CDN中刪除,並在此時更新。整個過程大約需要8小時才能完成基本的Azure支持計劃。這不是一個好的解決方案,我真的希望他們更新到我們可以從CDN中以編程方式清除某些內容的位置。這似乎是他們缺乏的基本功能。我認爲現在最好的辦法是啓用查詢字符串狀態,然後在更新時更新查詢字符串。我們爲js文件執行此操作,如/js/custommix.js?version=1。然後,當我們需要更新這些配置時,我們會從我們的配置中追加一個新版本。

http://azure.microsoft.com/en-us/blog/best-practices-for-the-windows-azure-content-delivery-network/

我怎樣才能清除或在Windows Azure CDN內容無效?

從1.4開始,沒有清除功能可用。此功能正在開發中。最好的新鮮度控制是按照本文檔和MSDN上的Windows Azure CDN文檔所述設置良好的緩存過期頭。

0

可以清除從Azure的新管理門戶網站的內容。