O ile mi wiadomo, wszystkie CDN działają w ten sposób.
To dlatego zazwyczaj używasz czegoś w rodzaju aktywów wersji na CDN. Nie używałbym foo.ext?x.y.z
, ponieważ w niektórych przeglądarkach i serwerach proxy istniało coś, co nie powodowało buforowania zasobów o wartości ?QUERY_STRING
.
Ogólnie może chcesz sprawdzić to: https://developers.google.com/speed/docs/best-practices/caching
Zawiera on wiele najlepszych praktyk i idzie w szczegóły, co robić i jak to działa.
Jeśli chodzi o S3 i Cloudfront, nie jestem zaznajomiony z unieważnieniem pamięci podręcznej, ale to, co powiedział Frederick Cheung, jest poprawne.
Niektórzy dostawcy umożliwiają również bezpośrednie wyczyszczenie pamięci podręcznej, ale ze względu na naturę CDN zmiany te prawie nigdy nie są natychmiastowe. Inną metodą jest ustawienie mniejszej wartości TTL (nagłówki wygasania), aby zasoby były odświeżane częściej. Ale myślę, że to także pokonuje cel CDN.
W naszym przypadku (Edgecast) unieważnienie pamięci podręcznej jest możliwe (proces ręczny) i bezpłatne, ale rzadko to robimy, ponieważ odpowiednio dostosowujemy nasze zasoby.
Miałem okropne uczucie, że tak było. Wygląda na to, że przegapili jakąś funkcję. Czy możesz podać odniesienie do tego, czy też nie jest ono określone? Dzięki. – Joe
Byłoby błędne założenie, że przesłanie nowej wersji do S3 oznacza, że chcesz wyczyścić pamięć podręczną w CloudFront. Tak, może to być zachowanie, którego szukasz, ale byłoby to aroganckie z AWS, aby "ćwiczyć", że to jest to, czego chcesz. W wielu przypadkach będę zapisywać zawartość w pamięci podręcznej w CloudFront, wiedząc, że wygasa ona zgodnie z moimi ustawieniami i będzie przesuwać zaktualizowaną zawartość w S3 z wyprzedzeniem. W moim przypadku automatyczne unieważnienie jest przeciwieństwem tego, czego chcę. –
Nie zakładam, ale wydaje się, że był to użyteczny parametr. – Joe