![]() |
![]() ![]() |
![]() |
![]()
Post
#1
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 14.06.2004 Ostrzeżenie: (0%) ![]() ![]() |
Witam
Proszę o pomoc w sprawie wywołania efektu odświeżenia strony w taki sposób aby obrazki zostały pociągnięte z serwera a nie z cache'a. W formularzu wysyłam na serwer obrazek, który po obróbce zostaje zapisany pod konkretną nazwą jako plik i jako wpis w mysql. Nazwa obrazka jest niezmienna - po zmianie obrazka na inny, dotychczasowy zostaje na serwerze zastąpiony nowym, który ma tę samą nazwę. Po powrocie na stronę, która te obrazki wyświetla, przeglądarka nie zauważa, że cokolwiek się zmnieniło i wyświetla stan sprzed zmiany obrazka - nazwa pliku (ta sama) wskazuje na plik, który ma już w cache'u więc pobiera go stamtąd, a to jest stary obrazek, który był przed zmianą. Ręczne odświeżenie strony powoduje poprawne wyświetlenie aktualnego obrazka z serwera. Moim problemem jest programowe zmuszenie przeglądarki do wykonania jednej prostej operacji odświeżenia strony jak Ctrl-R w firefoxie. Różne próby w java script (które podejmowałem po omacku bo nie znam javy) powodują albo ciągłe odświeżanie w pętli albo brak odświeżania (albo może odświeżanie z cacha) - w każdym razie bez efektów. Robię tak: Po zmianie zdjęcia przekazuję phpem parametr w $_GET. Na stronie wyświetlającej obrazki sprawdzam (w php) istnienie tego parametru w $_GET i jeśli jest, wysyłam do przeglądarki kod java-script, którym usiłuję odświezyć stronę oraz kasuję parametr kontrolny z $_GET (aby odświeżać tylko raz). Nie wiem jak ma wyglądać ten kod java. Kod jak niżej nie daje efektu.
Nie chcę przy zmianie obrazka zmieniac jego nazwy dodając losowy ciąg znaków aby nazwa była inna niż w cache'u. Nie mogę użyć odświeżania po krótkim czasie w sekcji meta html bo całość mam zorganizowaną w postaci niezmiennego szkieletu, w który php wkleja mi dynamicznie tylko kod każdej podstrony pomiędzy <div></div> a nie generuje całości. Na stronach mam sporo niezmiennej grafiki, która ma być z cache'a więc chcę odświeżać z serwera jak najmniej - tylko warunkowo konkretną podstronę a wręcz konkretny obrazek jakby się tak dało. Z góry dziękuję za pomoc Bart |
|
|
![]()
Post
#2
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Niestety to wina przeglądarki, bo to ona w takim wypadku decyduje co zrobić. Można ją przymuszać na kilka sposobów:
1. w htaccess ustawiać, żeby miały określone rozszerzenia plików niewielki okres cache'owania 2. dodawać w nazwie pliku losowe wartości, które nie wpływają na wyświetlenie, a są widziane przez przeglądarkę jako coś nowego. O co chodzi? Dodawaj do nazwy obrazka parametry. czyli obrazek.jpg?czas=ZMIENNA, gdzie ZMIENNA jest wartością losową. W ten sposób przeglądarka będzie cały czas uważać, że ma do czynienia z nowym obrazkiem. -------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 14.06.2004 Ostrzeżenie: (0%) ![]() ![]() |
Hmm..., czyli mówisz, że java mi tu na nic i że wystarczy tylko zmodyfikować w html
z:
na:
nie zmieniając nazwy plików ani w ogóle nie robiąc nic innego?? Zrobiłem sobie wobec tego: i... wygląda że działa :-) choć nie jestem już pewien bo nie wiem czemu wcześniej też miewałem efekty pozytywne a innym razem znowu przeglądarka ciągnęła z cache'a - nie wiem od czego to zależało... Czy ja Cię dobrze zrozumiałem, że to takie proste? ;-) Pozdrowienia Bart Ten post edytował BartT 16.03.2011, 13:07:02 |
|
|
![]()
Post
#4
|
|
![]() Grupa: Moderatorzy Postów: 4 362 Pomógł: 714 Dołączył: 12.02.2009 Skąd: Jak się położę tak leżę :D ![]() |
Dobrze zrozumiałeś... To takie proste jak napisałeś. W ten sposób postępuje się nie tylko z obrazkami, ale i plikami CSS lub JS, które czasem się zmieniają ale nie zawsze odświeżają bo też występuje problem nazwy tej samej. Można jako parametr wtedy dać datę modyfikacji pliku. Jeśli przeglądarka wykryje że są różne... Zassa nową wersję. Jeśli nie - zostawi starą.
-------------------- Najpierw był manual... Jeśli tam nie zawarto słów mądrości to zapytaj wszechwiedzącego Google zadając mu własciwe pytania. A jeśli i on milczy to Twój problem nie istnieje :D
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 14.06.2004 Ostrzeżenie: (0%) ![]() ![]() |
Wobec tego serdeczne dzięki, znowu się czegoś nauczyłem
Pozdrowienia Bart |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 5.07.2025 - 19:06 |