Måste uppdatera webbläsaren för att inte få gammal data från MySQL

Tråden skapades och har fått 3 svar. Det senaste inlägget skrevs .
1
  • Oregistrerad
  • 2005-12-14 12:31

Jag har två php sidor en som visar en lista (listsidan) över alla poster i en databas och en sida (detaljsidan) där jag kan skapa nya och ändra befintliga poster.

När jag ändrar en befintlig post och sparar den, ser jag de nya värdena i listsidan men om jag går in detaljsidan igen ser jag bara de 'gamla' värdena men om jag uppdaterar webbläsarsidan visas de nya!.

Kör jag exakt samma kod lokalt på en PB fungerar det som det ska
Kör jag på en OS X tiger server finns problemet.
Jag har testat med att köra databasen på två olika servrar (se nedan)

Det känns som ett cache problem, men i Apache, MySQL eller webbläsaren (samma sak händer i olika webbläsare på olika plattformar)

Lokalt: php 4.3.11 MySQL 4.0.24 Tiger 10.4.3
Server 1 php 5.04 MySQL 5.0.15 Tiger Server 10.4.3
Server 2 (bara databas som anropas av Server 1) My SQL 4.1.x Tiger Server 10.4.3

Finns det någon som känner igen detta.

  • Oregistrerad
  • 2005-12-14 17:06

Hittade svaret!

Det är Apache som ställer till det. I httpd.conf (private/etc/httpd/httpd.conf du måste vara inloggad som root för att ändra httpd.conf) finns i slutet:

<IfModule mod_expires.c>
ExpiresActive On
ExpiresDeault A60 Ändrade till A1 (60 står för sekunder som sidan ska leva i cache) Och allt är OK
ExpiresByType image/gif A3600 gif bilder ligger alltså kvar 60 min!!

Slutade med att jag satte ExpiresActive Off så att inget sparas i cache (hoppas jag). När man utvecklar och laddar en ny bild t ex har jag haft svårt att få den att 'ta' Nu fattar jag varför.

Hoppas detta kan hjälpa någon mer!

  • Medlem
  • Stockholm
  • 2005-12-14 17:09
Ursprungligen av FrejaII:

Jag har två php sidor en som visar en lista (listsidan) över alla poster i en databas och en sida (detaljsidan) där jag kan skapa nya och ändra befintliga poster.

När jag ändrar en befintlig post och sparar den, ser jag de nya värdena i listsidan men om jag går in detaljsidan igen ser jag bara de 'gamla' värdena men om jag uppdaterar webbläsarsidan visas de nya!.

Kör jag exakt samma kod lokalt på en PB fungerar det som det ska
Kör jag på en OS X tiger server finns problemet.
Jag har testat med att köra databasen på två olika servrar (se nedan)

Det känns som ett cache problem, men i Apache, MySQL eller webbläsaren (samma sak händer i olika webbläsare på olika plattformar)

Lokalt: php 4.3.11 MySQL 4.0.24 Tiger 10.4.3
Server 1 php 5.04 MySQL 5.0.15 Tiger Server 10.4.3
Server 2 (bara databas som anropas av Server 1) My SQL 4.1.x Tiger Server 10.4.3

Finns det någon som känner igen detta.

Har ingen aning hur pass korrekt denna kod är, men jag skickar med dessa direktiv i headern när jag vill vara 100% säker på att webläsaren inte cachar resultatet:

header("Expires: Mon, 1 Jul 1990 00:00:00 GMT");    // Date in the past
header("Last-Modified: " . gmdate("D, d M Y H:i:s") . " GMT");
                                                     // always modified
header("Pragma: no-cache");                          // HTTP/1.0
header("Cache-Control: no-store, no-cache, must-revalidate");  // HTTP/1.1
header("Cache-Control: post-check=0, pre-check=0", false);
  • Oregistrerad
  • 2005-12-14 17:20

Tack Kalleh!
Det borde ju också fungera, det var faktiskt nämt som en kommentar i httpd.conf.
Denna lösning är väl ett måste då man har ett webbhotell, där man inte kan påverka httpd.conf. Annars känns det spontant bättre att ändra i conf filen. Speciellt om man använder tredepartsmoduler som använder databaser t ex forum, login (phpsecurepages) osv annars måste man väl ändra koden där också gissar jag.

1
Bevaka tråden