Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> Problem z cache opery
konraddo
post
Post #1





Grupa: Zarejestrowani
Postów: 42
Pomógł: 1
Dołączył: 9.01.2007
Skąd: Sejny/Elbląg

Ostrzeżenie: (0%)
-----


Pytanie dotyczy projektu sklepu internetowego nad którym właśnie pracuję, a dokładniej koszyka i cache opery
dodam że mini-zawartośc koszyka jest wyświetlana na głównym lay'oucie, wiec jest pokazywany na każdej podstronie
Strona ładnie działa pod ie oraz pod ff, ale problem jest z operą
Kiedy się przegląda ofertę wybieramy produkt i dodajemy go do koszyka, do tej pory wszystko jest ok
kiedy zaczynamy przeglądać dalej ofertę powracamy na stronę gdzie już byliśmy, ale wtedy opera ładuje stronę ze swojego cache'u wraz z zawartością mini-koszyka, co jest błędem bo prawdziwa zawartość koszyka jest już inna, niż ta którą załadowała opera

jak zrobić by opera za każdym razem sprawdzała aktualność strony, lub jej części?

pod przeglądarkami ff oraz ie wszystko działa w porządku, tylko ta opera....

ustawienia opery mam standardowe
wersja: 9.24

Ten post edytował konraddo 25.11.2007, 19:10:48
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
Hazel
post
Post #2





Grupa: Zarejestrowani
Postów: 492
Pomógł: 33
Dołączył: 16.08.2007
Skąd: Wrocław

Ostrzeżenie: (0%)
-----


Ach, odkopię starego suchara, za złe chyba nikt nie będzie miał.

Namęczyłem się z wyżej wymienionym problemem, ładnych parę miesięcy szukałem, szukałem i nic nie mogłem wymyślić. Opera mająca ustawioną opcję "Sprawdzaj, czy przechowywane strony zostały zmienione na serwerze" na wartość inną niż "zawsze", sprawiała gigantyczne problemy i straciłem już nadzieję, ze da się to rozwiązać. Meta tag "refresh" podany w poście powyżej jest w mojej opinii bardzo złym pomysłem, po pierwsze to nie jest rozwiązanie działające we wszystkich przypadkach (a nawet można zaryzykować stwierdzenie że w niewielu), jest niezgodne ze specyfikacjami, powoduje błędy, a do tego w przeglądarce po zastosowaniu widać brzydkie, niepożądane szybkie odświeżenie. Sposób bardzo ułomny. Znalazłem coś, co idealnie rozwiązuje problem - to znaczy nie mam pewności, że każdy zawsze pod wszystkimi możliwymi przeglądarkami, ale u mnie działa pod Operą, FF, Safari i IE7 przy najróżniejszych ustawieniach cache'u. Wystarczył jeden nagłówek, wysyłany do serwera wraz z żądaniem AJAX. Wcześniejszy kod:

Kod
request.onreadystatechange=respHandle;
request.open(reqType,url,bool);
request.send(null);
 



To oczywiście wysyłanie danych do serwera metodą GET, ale dla POSTu jest analogicznie. Wystarczy to zmienić na:

Kod
request.onreadystatechange=respHandle;
request.open(reqType,url,bool);
request.setRequestHeader('If-Modified-Since', 'Wed, 15 Nov 1995 00:00:00 GMT');
request.send(null);
 




Nagłówek If-Modified-Since, doskonałe (dla mnie, przy mojej konfiguracji) rozwiązanie. Pozdrawiam wszystkich, którzy mieli taki sam problem i którym to pomoże. Data oczywiście nie gra roli, może być dowolna po północy 1 stycznia 1970 roku, może i nawet wcześniejsza może być, ale to nie ma żadnego znaczenia, wystarczy że będzie z przeszłości.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 6.10.2025 - 00:06