0

Aveces cuando hago una actualización css de una web de un cliente, me llaman diciendo que el cambio no se efectúa. Y sin embargo en mi computadora si aparece. Antes no sabía resolver este problema, pero ahora sí, basta con decirle a la persona que elimine su historial (caché), para que los cambios sean notorios. Pero ya me cansé, ahora quiero inhabilitar la memoria caché desde mis documentos html, y para eso recurro a ustedes. Sé que Html tiene una metaetiqueta para impedir la caché, pero no sé que tan confiable sea (es decir, si funciona en todos los navegadores, etc), por eso pienso que tal vez podría ser con PHP. Pero sea cual sea la solución, con PHP o HTML, les pido que por favor me copien un código para evitar la caché y que funcione en todos los navegadores. Gracias de antemano.

edu
  • 1
  • 1

3 Answers3

3

Yo suelo usar estas funciones, básicamente lo que hacen es obtener el tiempo de última modificación y agregarlo como un parámetro en la dirección del archivo.

El parámetro t hace que cada vez que haya una modificación la ruta será diferente y el navegador volverá a cargar el archivo ignorando la caché.

function load_css($file)
{
  if (is_file($file)) {
    $t = @filemtime($file);
  }    
  if ($t) {
    $file .= '?t='.$t;
  }
  print '<link href="'.$file.'" rel="stylesheet" type="text/css">';
}


function load_js($file)
{
  if (is_file($file)) {
    $t = @filemtime($file);
  }
  if ($t) {
    $file .= '?t='.$t;
  }
  print '<script type="text/javascript" src="'.$file.'"></script>';
}

Y las uso así:

<head>
  <?php 
  load_css('styles.css'); 
  load_js('functions.js');
  ?>
</head>
CJ Nimes
  • 759
  • 5
  • 6
0

Lo de refrescar con ctrl+F5 está bien para nosotros, pero los clientes no quieren eso. Lo más sencillo es meter un time() al final de los css, js o imagenes. Algo así:

<?php
 echo '<img src="/ruta_archivo/imagen.png".time(); >';
?>

Añadiendo time(); al final lo que fuerzas es al navegador a qué cargue el recurso (js, css o imágen) cada vez que entra

Franxo Bass
  • 25
  • 1
  • 1
  • 8
-1

Desconozco como se puede evitar guardar la cache, pero creo que es mas fácil que les digas a tus clientes que refresquen la pantalla con Ctrl + f5 que precisamente refresca una página sin recurrir a la cache, en firefox y chrome funcionan, no lo he probado en otros navegadores como edge u opera

0and6
  • 51
  • 1
  • 11
  • No funciona en Opera. Cuando tengo la página en local, al día tengo que estar eliminando la caché por lo menos 4 veces al día, o abriendo ventana privada. – edu Sep 13 '17 at 04:35