![]() |
![]() |
![]()
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 |
|
|
![]() |
![]()
Post
#2
|
|
![]() Grupa: Zarejestrowani Postów: 23 Pomógł: 2 Dołączył: 26.04.2007 Ostrzeżenie: (0%) ![]() ![]() |
Wiem o czym mówisz, też mnie to czasem irytuje, kiedy wiem, że zawartość strony na pewno się zmieniła, a Opera wrzuca mi starą treść
![]()
|
|
|
![]()
Post
#3
|
|
Grupa: Zarejestrowani Postów: 42 Pomógł: 1 Dołączył: 9.01.2007 Skąd: Sejny/Elbląg Ostrzeżenie: (0%) ![]() ![]() |
niestety pomimo obecności tych headerów, opera dalej pobiera nieaktualne strony z cache
zestaw headerów:
także nie wywierają żadnego wpływu czy ustawienie headera: header('Cache-Control: no-store, no-cache, must-revalidate'); // HTTP/1.1 powoduje że sprawdzana jest grafika strony czy również kod html, czy jedno i drugie? czy opera pomija te nagłówki? meta tagi też niczego nie zdziałły: ale żeby było ciekawiej odświeżenie strony też niczego nie daje dalej są wyświetlane nieaktualne informacje, dopiero po wyczyszczeniu cache i ponownym uruchomieniu przeglądarki wyświetlane podstrony są prawidłowo wyświetlane Ten post edytował konraddo 26.11.2007, 08:45:37 |
|
|
![]()
Post
#4
|
|
Grupa: Zarejestrowani Postów: 8 Pomógł: 0 Dołączył: 10.10.2004 Ostrzeżenie: (0%) ![]() ![]() |
Komus udalo sie rozwiazac ten problem?
|
|
|
![]()
Post
#5
|
|
Grupa: Zarejestrowani Postów: 1 Pomógł: 0 Dołączył: 4.01.2008 Ostrzeżenie: (0%) ![]() ![]() |
witam!
mialem podobny problem z odswiezaniem miniaturek zdjec kadrowanych na innej podstronie. probowalem wszystkich 'sztuczek' znalezionych w google, na przyklad: Kod <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"><BR> <meta http-equiv="Expires: Mon, 15 Dec 2007 01:00:00 GMT"><BR><meta http-equiv="Last-Modified:'.gmdate("D, d M Y H:i:s").' GMT"><BR> <meta http-equiv="Cache-Control: no-store, no-cache, must-revalidate"><BR><meta http-equiv="Cache-Control: post-check=0, pre-check=0", false><BR> <meta http-equiv="Pragma: no-cache">'; oraz Kod header( "Expires: Mon, 15 Dec 2007 01:00:00 GMT+0100" );<BR> header( "Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT" );<BR>header("Cache-Control: no-store, no-cache, must-revalidate"); //HTTP/1.1<BR> header("Cache-Control: post-check=0, pre-check=0", false);<BR>header("Pragma: no-cache"); // HTTP/1.0 Na cache IE dziala znakomicie ustawienie mu w opcjach ogolnych ustawien cache opcji "sprawdz czy sa nowsze wersje przechowywanych stron" na "przy kazdej wizycie na stronie", w FF nie ma tego nawet w miare dostepnego, a zmuszanie uzytkownika do szukania po plikach konfiguracyjnych jest bez sensu. Pomoglo (ale i tak nie na 100% przypadkow) dopiero Kod header("refresh: 0; url=kadrowanie.php"); wymuszajacego odswiezenie zawartosci strony. robie to na 2 sposoby: 1. po zakonczeniu uploadu (nadpisanie) zdjecia w celu wymuszenia odswiezenia miniaturki robie: Kod if ($handle->processed){ ...header("refresh: 0; url=kadrowanie.php");} 2. przy przekierowaniu na strone z miniaturkami z okna kadrowania robie stamtad GET: Kod header("location:kadrowanie.php?zatwierdz=ok#zdjecie_nr$_POST[zdjecie]"); a na stronie z miniaturkami warunek: Kod if ($_GET['zatwierdz']<>'')<BR> {echo '<BR> <meta http-equiv="refresh: 0; url=kadrowanie.php"><BR>';} moze nie jest to metoda finezyjna ale na Firefoxa pomogla (aczkolwiek mimo to zdarza sie nieprzeladowanie miniaturki) Ten post edytował rapra 4.01.2008, 20:19:35 |
|
|
![]()
Post
#6
|
|
![]() 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. -------------------- ![]() |
|
|
![]() ![]() |
![]() |
Wersja Lo-Fi | Aktualny czas: 19.07.2025 - 15:07 |