2010-01-06 26 views
5
<script type="text/javascript" src="test.php"></script> 

La primera vez que visita esa página, prueba.php no es visitado,¿Cuándo sucederá esto?

pero si actualiza la página, que va a llegar plazo.

¿Alguna vez has experimentado esto?

+4

Es porque está en caché. –

Respuesta

9

Ocurrirá cuando test.php se guarde localmente o de forma remota.

+0

si es solo eso, entonces ¿no debería visitar test.php la primera vez y exactamente no cuando se renueva? – catchmeifyoutry

+0

se almacenará en caché desde la * última * vez que actualizó. – nickf

+0

exactamente, pero la pregunta indica que no se cargó durante la primera vez, entonces, ¿cómo podría almacenarse en caché? – catchmeifyoutry

2

Esto puede suceder cuando el archivo test.php está almacenado en la memoria caché, que puede estar en la memoria caché del navegador o por algún proxy en el camino.


Prohibir el almacenamiento en caché de test.php puede ayudar; esto se puede hacer enviando las cabeceras HTTP correctas - citando un ejemplo de la página del manual header:

scripts PHP a menudo generan contenido dinámico que no debe ser almacenado en caché por el navegador cliente o cualquier caché de proxy entre el servidor y el cliente navegador. Muchos servidores proxy y los clientes pueden verán obligados a desactivar el almacenamiento en caché con:

<?php 
header("Cache-Control: no-cache, must-revalidate"); // HTTP/1.1 
header("Expires: Sat, 26 Jul 1997 05:00:00 GMT"); // Date in the past 
?> 
2

caché es probable que la causa de la interrupción de llamadas. Puede forzar a que esto se llama cada visita al anexar una cadena constante cambio a la ruta:

<script type="text/javascript" src="test.php?u=<?php print time(); ?>"></script> 
4

Como dijo Tor y sedoso, lo más probable es causada por la página que se almacena en caché. Si tiene Firebug instalado, abra la pestaña "Net" cuando vaya a la página y podría verlo decir "304 Not Modified" - esto significa que ha sido almacenado en caché.

La forma más fácil y fiable (en mi experiencia) para detener un archivo que se está almacenado en caché es añadir una cadena de consulta aleatoria a ella:

<script type="text/javascript" src="test.php?_=46031535"></script> 

Usted sólo tiene que cambiar en cada carga de página (en el lado del servidor o del cliente).

Por supuesto, si los encabezados de caché están configurados correctamente en el servidor, entonces esto no debería ser un problema, pero siempre he encontrado que este método es más fácil.

+3

A continuación de esto; en realidad es bueno (si su sistema lo admite) poner el número de revisión del archivo (SO lo hace, y lo hago automáticamente a través de algunos scripts de compilación, para mis archivos estáticos). De esta manera, la misma versión siempre se almacena en caché, pero las nuevas versiones se vuelven a descargar inmediatamente. –

2

Parece que su script no está registrado en la carga de la página, ¿está dentro de la etiqueta Head?

0

¿Cómo se puede saber que no se visita?

¿Lo asume, porque algún código dentro de él no se ejecuta?

Si ese es el caso, podría ser que está accediendo el DOM de la página, mientras que la página aún no ha cargado completamente .. (y por lo tanto produce un error en el código JavaScript)

Pero la segunda vez (y, posteriormente,) el código hTML de la página se almacena en caché y así, cuando la secuencia de comandos intenta acceder al DOM es ya existe y funciona el código ..

sólo un pensamiento diferente;)

ps.¿Recibes algún error de Javascript?

Cuestiones relacionadas