Después de lanzar durante mucho tiempo, utilicé el método de carga jQuery para solicitar la solicitud en el programa. Hay un Baidu, que sabe que la carga se solicita en un Get, por lo que es decir, el navegador es
Se almacenó en caché. Busqué muchas soluciones y muchas en Internet. Se divide principalmente en soluciones de clientes y soluciones de servidor.
1. Solución del cliente
IE Estrategia de acceso: opciones de Internet que navegan por los registros históricos: la opción de archivos temporales de Internet
1: Agregue una función aleatoria después de la página solicitada por AJAX, podemos usar la función de tiempo aleatorio
Agregar t = math.random () después de la URL enviada por JavaScript
Por ejemplo: url+"&"+"t ="+math.random ();
2: Agregue xmlhttprequest.setRequestHeader ("if-modify-since", "0")
En circunstancias normales, el xmlhttprequest aquí no se usará directamente
Debería poder encontrar este código
Xxxxx.send (aaa yyyyy);
Entonces conviértalo en
Xxxxx.setRequestHeader ("if-modify-since", "0");
Xxxxx.send (aaa yyyyy);
La práctica ha demostrado que ambos métodos son muy efectivos.
1. Agregue el encabezado ("Cache-Control: No-Cache, debe revalidar") en el servidor
2. Agregue xmlhttprequest.setRequestHeader ("if modificado-since", "0");
3. Agregue xmlhttprequest.setRequestHeader ("Cache-Control", "No-Cache");
4. Agregar "? Fresh =" + Math.random () Después del parámetro URL de AJAX;
5. El cuarto método es similar al tercero.
6. Use Post Reemplazar obtenga: no recomendado
2. Solución del lado del servidor:
Tome Struts2 como ejemplo:
Método del servidor Struts2
Código XML
Copiar código del código de la siguiente manera:
<paquete name = "json-nocache" extends = "json-default">
<WterCeptors>
<Interceptor name = "Cachingheadersinterceptor" />
<Interceptor-stack name = "DefaultSecurityStack">
<Interceptor-Ref name = "DefaultStack" />
<Interceptor-Ref name = "Cachingheadersinterceptor" />
</Internet-stack>
</interceptores>
<Default-interceptor-ref name = "DefaultSecurityStack" /> />
</paquete>
Código Java
Copiar código del código de la siguiente manera:
Cachingheaderinterceptor de clase pública extiende abstractIntercepor {
Private static final Long SerialVersionUid = 1L;
Intercepción de cadena pública
ActionContext context = invocation.getInVocontext ();
HttpservletResponse respuesta = (httpservletResponse) context.get (strutsStatics.http_Response);
if (respuesta! = nulo) {
Respuesta.setheader ("Cache-Control", "No-Cache");
respuesta.setheader ("Pragma", "No-Cache");
respuesta.setheader ("expiras", "-1");
}
Return invocation.invoke ();
}
}