Moje pytanie dotyczy jednego posta omówionego jakiś czas temu: jak wyczyścić lub zastąpić obraz z pamięci podręcznej
Pozwól, że przedstawię ci, co robię ... Używam JavaScript, aby utworzyć animację, która będzie aktualizowana co 5 minut. Używam sztuczki polegającej na dodawaniu znaczników czasu do nazw obrazów, więc moje obrazy są takie: image-1-no-cache.png? D = 131415135135
Używam tego, aby zapewnić aktualizację. Jeśli nie zrobię różnicy między nazwami, przeglądarka niczego nie zaktualizuje, ponieważ obrazy będą przechowywane w pamięci podręcznej, a przeglądarka nie będzie wiedziała, że się zmieniły. Problemem jest to, że obrazy są stale przechowywane. Tracę referencje przez JavaScript i nie wiem, jak je usunąć. Po kilku godzinach pamięć podręczna jest pełna obrazów, a strona internetowa zajmuje dużo pamięci RAM.
To, co próbuję teraz zrobić, to ustawić datę ważności obrazów. Włączyłem moduły mod_headers i mod_expires i zmieniłem plik .htaccess, próbując różnych rzeczy:
<Files ~ ".*no-cache.png?=*">
Header set Cache-control "no-cache"
</Files>
lub
<FilesMatch ".*no-cache.png.*">
ExpiresActive On
ExpiresDefault A300
</FilesMatch>
Nic nie działa. Chodzi o to, aby pliki -no-cache.png? =. nie do buforowania. Dlaczego nie osiągam dobrych wyników? Czego mi brakuje ?
Po raz pierwszy próbuję zrobić coś podobnego i jestem całkiem zdezorientowany. Każda pomoc będzie mile widziana. Dziękuję Ci ! Yun
Odpowiedzi:
0 dla odpowiedzi № 1Dodawanie ?something
do obrazu nie sprawiają, że nie można go buforować. To tworzy Nowy URL, który może być buforowalny, i nie wpływa na inne adresy URL, więc wszystkie inne ?versions
pozostań również w pamięci podręcznej.
<Files ~ "no-cache.png">
Header set Cache-control "max-age=10, must-revalidate"
</Files>
Dzięki temu Apache doda nagłówek do wszystkich plików za pomocą no-cache.png
w dowolnym miejscu w nazwie pliku (.*
nie jest potrzebne). AFAIK odpowiada to nazwie systemu plików, a nie adresowi URL, więc ciąg zapytania nigdy tam nie będzie).
Nagłówek mówi o buforowaniu przez maksymalnie 10 sekund i sprawdzaniu świeżości na serwerze przed każdym użyciem.
0 dla odpowiedzi nr 2
To nie działa !
Korzystając z konfiguracji, przeglądarka powinna ponownie zweryfikować (= zaktualizować) obraz po 10 sekundach i tak się nie dzieje.
Myślę, że najlepszą opcją jest ustawienie „Nagłówkaustaw Cache-Control na „no-store”. Jeśli mam wszystkie obrazy przywoływane w tablicy obrazów JavaScript, nie muszę używać pamięci podręcznej. Na razie jest to najlepsza opcja, jaką znalazłem.
Mimo wszystko dziekuję, Yun