Autor Zpráva
quatzael
Profil
Zrovna řeším naprostou záhadu..
Na jedné stránce mám výpis položek z databáze. Klasicky pomocí SELECT. Vybírám jen ty, které nejsou smazány, takže tam mám něco jako:
WHERE status <> 'deleted'
U každý položky mám tlačítko, jehož prostřednictvím se odešle formulář na script, který danou položku "smaže" (v databázi ve sloupci status přepíše na deleted) a potom se script přesměruje (pomocí 303) na potvrzovací stránku, že položka byla smazána.
No a potom když klasickou navigací (přes <a>čka) přejdu na původní stránku, kde je ten výpis položek z databáze tak ta položka tam je pořád zobrazena.. Refreshnu stránku a až teprve potom zmizí..

Napadlo mě, že by nějak možná prohlížeč si uchovával stránku a automaticky nenačítal nový data, když tam jen tak přejdu pomocí <a>.

Tak jsem udělal pokus, klasicky jsem v IE smazal jednu položku, v phpMyAdmin jsem zkontroloval, že je opravdu smazaná (označená jako 'deleted') a pak jsem si otevřel Chrome, najedu na stránku s výpisem položek a zase tam je ta smazaná položka normálně zobrazená. Zase refreshnu a je pryč..

A takhle se to pořád chová..

Ověřoval jsem jestli náhodou tam nemám někde ten výsledek z databáze nějak uloženej v SESSION, ale opravdu ne..
A ten seznam položek normálně vypisuju pomocí cyklu while.. Fakt nevím čím by to mohlo být..

Nenapadá někoho něco?
Taps
Profil
Dela to i ve firefoxu? Mozna bude problem ns urovni cachovani dat
quatzael
Profil
To jsem nezkoušel. Teď jsem mimo komp, takže to večer zkusím.. A da se to teda nějak ovlivnit, když to dělají prohlížeče?

Ale stejně nechápu jak za to může cachovani..?!
Vždyť přece IE Chromu nic nepředává..

Ale popisoval jsem přece, že to funguje tak, že smažu položku v IE, potom si spustím úplně nově Chrome, otevřu si tu stránku s tím seznamem a ta položka tam je zobrazená. Refreshnu Chrome a už tam není..

Nechápu jak tohle může souviset s cachovanim na straně prohlížeče.. To spíš, že by bylo něco na straně serveru..
Kajman
Profil
Na stránce s výpisem zkuste zakázat http hlavičkami cachování. Tím by se mělo vyřadit cachování na straně prohlížeče a případného proxy serveru.
quatzael
Profil
Kajman:
Jak se to dělá?


Ale prostě stejně pořád nechápu jak to může ovlivňovat cache, když Chrome jsem neměl nijak zapnutej, a čekal bych, že mi zobrazí položky podle aktuálního stavu databáze. A ne podle toho co IE uloží do cache.
Přece není jednotná cache pro všechny prohlížeče, každý má svojí vlastní cache, nebo ne?
Kajman
Profil
quatzael:
Jak se to dělá?
V php díky funkci header.
Taps
Profil
quatzael:
Jsem zvedavy jak se ti bude chovat firefox. Pokud se bude chovat rozdilne nez chrome a ie tak to bude v cachovani
quatzael
Profil
Taps:
Tak akorát jsem to vyzkoušel v tom Firefoxu a je to úplně stejný..
V IE jsem smazal položku, spustil jsem Firefox, doklikal na stránku s tím výpisem a zase tam je ta smazaná.. Čili úplně stejný..


Aha, tak vyřešeno.

Měl jsem úplně na začátku scriptu (po session_start()) tuhle srandu:
header_remove('Cache-Control');
header_remove('Expires');
header_remove('Pragma');

Ve všech index.php skriptech mám hned includovaný skripty ven mimo veřejnou složku, takže jsem si toho prve nevšiml.. Nějak se tam prostě tohle zatoulalo..

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0