2012-09-21 12 views
7

Mam pamięć masową typu blob i punkt końcowy CDN, który przechowuje moją statyczną zawartość. Teraz chcę zaktualizować plik app.js, ponieważ został zmodyfikowany, ale kiedy piszę ten plik do blob, CDN nadal daje mi stary plik app.js. Jak mogę zaktualizować mój plik app.js? Czy muszę poczekać, aż pamięć podręczna się nie skończy?Zaktualizuj plik w systemie Windows Azure CDN

+0

Naprawdę potrzebuję odpowiedzi na to pytanie również. Próbowałem zmylić nagłówki kontrolek pamięci podręcznej, ale nie jestem pewien, co z nimi zrobić. Mogę przesłać plik z nową nazwą, a jego pojawienie się natychmiast, ale modyfikacje istniejącego pliku nadal nie pojawiają się po 72 godzinach. – Erick

Odpowiedz

1

CDN jest prosty. Gdy przychodzi żądanie, pobiera zawartość od początku (w tym przypadku do pamięci typu blob), a następnie buforuje ją przez pewien czas w oparciu o nagłówek Cache-Control. Będzie dostarczać te same treści, dopóki pamięć podręczna nie wygaśnie.

Nie ma sposobu, aby powiedzieć CDN, aby wygaśnie coś wcześnie.

Inni mogą wskoczyć z bardziej pomocną radą, jak sobie z tym poradzić (jak parametry ciągu zapytania), ale chciałem tylko wyjaśnić, jak działa buforowanie CDN.

+0

Dzięki za informacje. Czy wiesz, co to jest zachowanie, jeśli nagłówek Cache-Control jest pusty w tym konkretnym obiekcie typu blob? – Erick

+0

Informacje te mogą być nieaktualne, ale w pewnym momencie heurystyka polegała na tym, że CDN przechowywał w pamięci podręcznej zawartość przez okres (teraz - zmodyfikowany), maksymalnie, o ile dobrze pamiętam, 72 godziny. Jeśli więc ostatnio zmodyfikowany nagłówek wskazuje, że zawartość ma trzy godziny, CDN będzie ją buforować przez następne trzy godziny przed ponownym sprawdzeniem. Ale pamiętaj, że to mogło się zmienić i nie jest dobrym pomysłem poleganie na domyślnym zachowaniu. – smarx

-1

Wygląda na to, że domyślny czas wygaśnięcia wynosi 7 dni.

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

Blobs że największe korzyści z buforowania Azure CDN są te, które są dostępnego często podczas swojego czasu-to-live (TTL) okresu. Blob pozostaje w pamięci podręcznej przez okres TTL, a następnie jest odświeżany przez usługę kropli po upływie tego czasu. Następnie proces się powtarza.

Masz dwie opcje sterowania TTL:

  1. Nie ustawiaj wartości cache więc przy użyciu domyślnego TTL 7 dni.

  2. jawnie ustawić właściwość x-ms-blob-Cache-Control na Blob najprościej, Put Block List, Set lub prośba Blob Właściwości lub użyj Azure Zarządzane Biblioteka ustawić właściwość BlobProperties.CacheControl. Ustawienie tej właściwości ustawia wartość nagłówka Cache-Control dla obiektu typu blob. Wartość nagłówka lub właściwości powinna wynosić w sekundach. Na przykład, aby ustawić maksymalny okres buforowania na jeden rok: rok, możesz określić nagłówek żądania jako x-ms-blob-cache-control: public, max-age = 31556926. Aby uzyskać szczegółowe informacje na temat ustawiania nagłówków buforowania, zobacz specyfikację HTTP/1.1.

1

Po prostu nie możesz zaktualizować obiekt cache przed jej wygaśnięciem.

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

Jeśli nie chcesz buforować obiekt w Azure Content Delivery Network (CDN), można wziąć jeden z następujących kroków:

  • dotyczący Azure blob, możesz usunąć obiekt typu blob z publicznego kontenera.

  • Możesz ustawić kontener jako prywatny zamiast publicznego. Aby uzyskać więcej informacji, zobacz Ograniczanie dostępu do kontenerów i obiektów BLOB.

  • Możesz wyłączyć lub usunąć punkt końcowy CDN za pomocą portalu Azure Management Portal.

  • Możesz zmodyfikować hostowaną usługę tak, aby nie odpowiadała już na żądania dotyczące obiektu.

Obiekt już zapisany w pamięci podręcznej w CDN pozostanie zbuforowany do czasu wygaśnięcia okresu czasu dla obiektu. Po wygaśnięciu czasu oczekiwania, CDN sprawdzi, czy punkt końcowy CDN jest nadal ważny, a obiekt jest nadal anonimowo dostępny. Jeśli nie, obiekt nie będzie już buforowany.

Brak wyraźnego narzędzia "wyczyść" jest obecnie dostępne dla usługi Azure CDN.


Inne obejścia obejmują korzystając albo fałszywe ciągi zapytań lub nowych nazw plików, jeśli to możliwe. Zobacz tutaj: https://stackoverflow.com/a/8773202/908336

0

Jedynym sposobem, aby to zrobić teraz, jest skontaktowanie się z Pomocą Azure, a oni z kolei otworzą bilet wsparcia z Verizon EdgeCast, aby usunąć plik z CDN i zostanie on zaktualizowany w tym momencie. Cały ten proces trwa około 8 godzin w podstawowym planie wsparcia platformy Azure. To nie jest dobre rozwiązanie i mam nadzieję, że zaktualizują to do miejsca, w którym możemy programowo oczyścić coś z CDN. Wydaje się, że brakuje im podstawowej funkcji. Najprościej, jak sądzę, teraz jest włączenie statusu zapytania o kwerendę, a następnie zaktualizowanie tego zapytania podczas aktualizacji. Robimy to dla plików js, takich jak /js/custommix.js?version=1. Następnie dołączamy nową wersję z naszej konfiguracji, kiedy musimy ją zaktualizować.

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

Jak mogę oczyścić lub utratę zawartości w systemie Windows Azure CDN?

Od wersji 1.4 funkcja czyszczenia nie jest dostępna. Ta funkcja jest w trakcie opracowywania. Najlepszą kontrolą świeżości jest ustawienie dobrych nagłówków wygasania pamięci podręcznej, jak opisano w tym dokumencie, oraz dokumentacji CDN Windows Azure w witrynie MSDN.

2

Pytanie zostało zadane dość dawno temu. Chciałem tylko zaktualizować metodę, która okazała się dla mnie przydatna. Jest zalecany przez firmę Microsoft. Zasadniczo musisz skonfigurować nagłówki kontrolek pamięci podręcznej w swojej pamięci Blob. Możesz ustawić nagłówek kontrolki pamięci podręcznej o wartości "public, max-age = 3600". Spowoduje to buforowanie pliku przez około godzinę.

https://azure.microsoft.com/en-us/documentation/articles/cdn-manage-expiration-of-blob-content/

0

można oczyścić treści z portalu Azure nowy Zarząd.

Powiązane problemy