Das Problem zwischengespeicherter Anforderungen in Ajax
Bei der Ajax-Entwicklung tritt das Problem auf, dass der Browser Inhalte zwischenspeichert. Wenn beispielsweise ein bestimmtes Element ein Mausereignis (onmouseover) registriert, nachdem das Ereignis ausgelöst wurde , es wird übergeben xmlhttprequest Gehen Sie zum Server, um Inhalte abzurufen. Ohne die Seite zu aktualisieren, speichert der Browser den Inhalt zum ersten Mal zwischen.
Normalerweise handelt es sich bei dieser Art von Anfrage um eine GET-Anfrage, die von xmlhttprequest initiiert wird. Gemäß der HTTP-Spezifikation wird GET zum Abrufen von Informationen verwendet und sollte idempotent sein. Das heißt, die GET-Methode ist geeignet, wenn wiederholte GET-Anfragen mit derselben URL dieselben erwarteten Ergebnisse liefern. Wenn eine Anfrage Nebenwirkungen hat (z. B. beim Senden von Daten zur Registrierung eines neuen Benutzers), sollte eine POST-Anfrage anstelle einer GET-Anfrage verwendet werden. Daher speichert der Browser die GET-Anfrage zwischen.
Lösung:
1. Hängen Sie eine Zeichenfolge nach der GET-Anfrage-URL an, damit der Server denkt, dass es sich nicht um dieselbe Anfrage handelt.
Beispiel „http://www.example.com/index.php?class=aitcle&page=5&_t=" + new Date().getTime()
2. Senden Sie eine Anfrage ajax Fügen Sie xmlHttpRequest.setRequestHeader("If-Modified-Since",0") hinzu
3. Fügen Sie xmlHttpRequest.setRequestHeader("Cache-Control",no-cache") hinzu, bevor Sie eine Ajax-Anfrage senden >
4. Wenn der Server auf die Anfrage antwortet, fügen Sie den Header hinzu („Cache-Control: no-cache, must-revalidate“); (PHP)
5 POST wird nicht zwischengespeichert