Foros del Web » Programando para Internet » PHP »

Actualizar el caché mediante PHP

Estas en el tema de Actualizar el caché mediante PHP en el foro de PHP en Foros del Web. Buen verano a todos. Aquí va mi duda: Tengo varias páginas que están en desarrollo constantemente, cambio montones de cosas y las actualizo en el ...
  #1 (permalink)  
Antiguo 02/08/2012, 01:56
liranan
Invitado
 
Mensajes: n/a
Puntos:
Actualizar el caché mediante PHP

Buen verano a todos.

Aquí va mi duda:

Tengo varias páginas que están en desarrollo constantemente, cambio montones de cosas y las actualizo en el servidor. A veces, después de hacerlo en algunos navegadores o en algunos ordenadores no se muestran los cambios efectuados hasta que no actualizas la página o incluso a veces hasta que no borras todo el historial, cookies, etc.

Mi idea, y a lo mejor estoy equivocado, es que la máquina está cargando una versión desactualizada de alguna de las páginas que tiene guardada en el caché.

Esto hace que a veces se desordenen las cosas o algo funcione mal, yo lo sé solucionar pero evidentemente el usuario final quizás no se tome la molestia y directamente abandone la página.

Se me ocurre que a lo mejor desde php puedo decirle a la máquina del usuario que actualice el caché de alguna manera, o quizás la solución sea otra...
Como no sé bien cuál es el problema me resulta difícil buscar la solución en internet.

Alguien tiene alguna sugerencia?

Gracias.
Gonzalo.
  #2 (permalink)  
Antiguo 02/08/2012, 02:09
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Actualizar el caché mediante PHP

La caché se hace del CSS, JS, imagenes... nunca del código php...


Para esto, hay soluciones...

Una que he visto frecuentemente, es usar algo como "la version" del archivo. Cuando linkas un js, css, le añades al final un ?version=2.0001.2321.21 y cada vez q quieras actualizar, cambias el número de versión, y listo

Aunq no todos los navegadores "cachean" a partir del ?, puedes usar htaccess para cambiar por ejemplo myfile_12312312.js por myfile.js?12312312 (o myfile.js?version=12312312) y así te aseguras el cacheo correcto segun cambies el código en todos los navegadores...

Espero haberme explicado :)

(PD: Lo de q ponga version no hace falta, puedes poner sólo numeros, o lo q quieras ;) )

PD2:

Tb puedes setear la caché de los JS a solo 1 día, o cosas así xD

Edit: http://stackoverflow.com/questions/3...vascript-files ;)
__________________
>> Eleazan's Source
>> @Eleazan
  #3 (permalink)  
Antiguo 02/08/2012, 02:13
liranan
Invitado
 
Mensajes: n/a
Puntos:
Respuesta: Actualizar el caché mediante PHP

Gracias, ya veo que iba desencaminado en cuanto a la solución; y resulta que es más fácil de lo que me pensaba.

Pensándolo me doy cuenta de que el problema suele venir siempre de css y de archivos flash, con lo que es lógico pensar que no tiene relación con php...

Muchas gracias por la info!
Gonzalo.
  #4 (permalink)  
Antiguo 02/08/2012, 04:27
Avatar de dontexplain  
Fecha de Ingreso: junio-2012
Mensajes: 536
Antigüedad: 11 años, 10 meses
Puntos: 127
Respuesta: Actualizar el caché mediante PHP

PUedes usar la alternativa de Eleazan o simplemente

.htaccess

RewriteEngine On
RewriteRule ^sin-cache/(.*?)$ sincache.php?archivo=$1

sincache.php

header("Cache-Control: no-cache, must-revalidate");
header("Expires: Sat, 1 Jul 1991 05:00:00 GMT");
readfile($_GET['archivo']);

sin-cache/script.js
sin-cache/estilo.css

Un saludo.
__________________
21añero.
HTML/CSS, PHP, JS/jQuery, Mysql; NodeJS/Socket.io (& V8); C++ ; Python (wxpy); Ensamblador.
Músico (clarinetista/pianista) y compositor
  #5 (permalink)  
Antiguo 02/08/2012, 04:58
Avatar de Eleazan  
Fecha de Ingreso: abril-2008
Ubicación: Ibiza
Mensajes: 1.879
Antigüedad: 16 años
Puntos: 326
Respuesta: Actualizar el caché mediante PHP

Cita:
Iniciado por dontexplain Ver Mensaje
PUedes usar la alternativa de Eleazan o simplemente

.htaccess

RewriteEngine On
RewriteRule ^sin-cache/(.*?)$ sincache.php?archivo=$1

sincache.php

header("Cache-Control: no-cache, must-revalidate");
header("Expires: Sat, 1 Jul 1991 05:00:00 GMT");
readfile($_GET['archivo']);

sin-cache/script.js
sin-cache/estilo.css

Un saludo.
De esa forma, cada pagina q visites tienes q recargar el css, js, etc etc....

Creo q es más beneficiosa la otra (añadir una version), ya que si me muevo por 20pags, no me carga 20veces el js, sino 1 (a no ser q cambie a mitad, que serían 2!). Evitas el problema de cambiar algo y q esté cacheado, pero no obligas a que el cliente no chachee nada...
__________________
>> Eleazan's Source
>> @Eleazan

Etiquetas: mediante, usuarios
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 01:58.