Dość dziwaczny.
W mojej aplikacji internetowej mam link do arkusza kalkulacyjnego przechowywanego w S3. Wcześniej zapisałem ten plik. Teraz zaktualizowałem ten plik w s3.
Gdy próbuję pobrać go ponownie z tego samego linku, nadal otrzymuję poprzednią wersję.
Jeśli wyczyszczę pamięć podręczną, pobierze nowszą wersję ...
google-chrome
thinkanotherone
źródło
źródło
Odpowiedzi:
Masz dwie możliwości obejścia tego:
Możesz powiedzieć Amazonowi, jak ustawić
Cache-Control
nagłówek po pobraniu adresu URL. W ten sam sposób, w jaki określaszContent-Type
nagłówek, możesz również kontrolować inne nagłówki. Możesz zmienić buforowanie na znacznie krótszy przedział czasu.Możesz kontrolować buforowanie strony internetowej, która łączy się z plikiem w S3 i zmodyfikować łącze do pliku S3, aby jego zawartość nie była używana z pamięci podręcznej, gdy plik się zmieni. Zasadniczo możesz po prostu umieścić
?version=1
na końcu adresu URL. Jeśli zmienisz to na?version=2
(i tak dalej) przeglądarka nie użyje buforowanej wersji pliku, ponieważ adres URL nie będzie dokładnie pasował.Ta druga metoda pozwala na użycie agresywnego buforowania w pliku S3 i uniknięcie zmarnowanych transferów. Wymaga to jednak modyfikacji każdej strony internetowej, która łączy się z plikiem przy każdej zmianie zawartości pliku.
Widzieć Opuść swój rachunek Amazon S3 więcej o obu technikach, chociaż starasz się uzyskać efekt odwrotny.
źródło
Tak. Mam ten sam problem, nawet jeśli nie używam S3 jako pamięci. Mam aplikację Symfony2, która służy do pobierania zawartości lokalnego pliku. Adres URL jest zawsze taki sam, ponieważ otrzymuję zawartość pliku w PHP i wysyłam go do przeglądarki. Jeśli zmodyfikuję zawartość lokalnego pliku, Firefox i IE otrzymają najnowszą wersję pliku BUT chrome nie. Próbowałem ustawić nagłówki kontroli pamięci podręcznej, ale jest to bezużyteczne, Chrome po prostu je ignoruje.
Pomysł na nagłówki, których używam:
Jeśli dodam losowy numer wersji do adresu URL (? Version = randomIntByTime), Chrome w końcu zapisze najnowszą wersję pliku. Frustrujące jest pisanie dodatkowego kodu dla Chrome.
źródło
Nie, ale możliwe jest, że istnieje inne urządzenie buforujące między Tobą a S3. Podobnie jak serwer ISA Microsoftu, który przechowuje buforowanie ruchu w sieci i widziałem, jak to robi wiele razy.
źródło