2012-03-05 19 views
11

Estoy desarrollando un sitio web simple usando PHP.Prevención del almacenamiento en caché de archivos CSS

configuración Desarrollo: WAMP

configuración

Producción: lámpara

Si bien las pruebas, he cambiado mi archivo CSS, pero cuando vuelvo a cargar la página de mi navegador (no estoy seguro) sigue utilizando el antiguo almacenado en caché css.

he hecho un poco buscando en Google y encontró diferentes soluciones que ya he intentado

  • Al añadir una consulta al final de css css/main.css?78923
  • Usando Ctrl + R (en Firefox) para obligar a ir a buscar del recurso
  • Desactivar el almacenamiento en caché de Firefox y usar el complemento Clear Cache de Firefox.

Cuando nada de esto funcionó, he hecho un poco más buscando en Google, donde me encontré con una página de pila (here) en la que alguien sugirió que Apache almacena en caché los recursos. Entonces, el problema no está en Firefox, sino en el servidor. El chico también sugirió una solución que no entendía (yo siendo un novato)

Mi pregunta tiene dos partes:

  1. ¿Es cierto que Apache almacena en caché los recursos? (¿Cómo puedo verificar si la mía lo hace?)
  2. Cómo evitar que cachee?

PS: Copiar y pegar la solución en cuestión pila (el que tengo más arriba como un enlace) no funcionó :(

+0

¿Está utilizando un marco PHP o algún CMS o carrito de compras preconstruido? –

+0

Mira [este bookmarklet] (http://david.dojotoolkit.org/recss.html). No es realmente lo que estás buscando, pero podría ayudarte. Recarga tu CSS sin refrescar la página. –

+0

@DavidGallagher No estoy usando ningún framework PHP. Simplemente PHP – Ankit

Respuesta

14

He encontré con este problema un par de veces y, generalmente, sobre el problema vienen en los sitios de producción llamando a mi css como esto

<link rel="stylesheet" type="text/css" href="style.css?v=1" /> 

Cuando sacas a cabo una actualización sólo cambia el v=1 a v=2 y obligará a todos los navegadores de los usuarios a tomar las nuevas hojas de estilo. Esto funcionará también para los archivos de script.Si ve el código fuente en Google, notará que también usan este enfoque.

+0

Gracias! Esto detuvo un proyecto mío durante meses, muy apreciado – Timmah

0
  1. Apache (-modules) se pueden almacenar en caché Recursos, pero que es no es su problema actual
  2. O desactive su browsercache, descargue la caché al recargar o entregue css con encabezados Modded. Podría escribir una secuencia de comandos que establezca el encabezado de caducidad para que su navegador tenga que obtener una versión nueva de su CSS

De todos modos no entiendo el punto en eso. Para el desarrollo, es mucho más fácil simplemente deshabilitar tu browsercache o presionar Ctrl + r.

8

Solía ​​tener el mismo problema con mi sistema de desarrollo LAMP, causado por un montaje de red. Logré deshacerme de él agregando estas dos líneas a mi conf de apache.

EnableMMAP off 
EnableSendfile off 
+0

Puedo configurarlos en mi entorno de desarrollo. Pero, mi servidor web no me proporcionará acceso a 'apache.conf'. ¿Hay alguna manera de establecer estos parámetros localmente (puede estar en .htaccess o algo así). – Ankit

+0

Actualización: No funcionó en WAMP (al menos), mi máquina de desarrollo. PD: En WAMP, solo vi httpd.conf. ¿Es esto diferente de apache.conf – Ankit

+0

Se pueden establecer en .htaccess. Dado que Apache es una compañía, httpd es el nombre correcto para el servidor web. apache.conf y httpd.conf deben ser semánticamente iguales. – Corubba

0

siempre utilizando httcacheclean cuando el cambio algo en los archivos de activos (js, css, etc)

1

En mis páginas php Yo suelo añadir la fecha y hora actual hasta el final de su href css:

<link rel="stylesheet" type="text/css" href="style.css?<?php echo date('l jS \of F Y h:i:s A'); ?>" /> 

Ref: Here

1

Sé que esta es una pregunta anterior, pero me encontré con esto y tuve algunos de los mismos problemas. Aquí es una forma rápida de no mantener el caché en cualquier archivo:

<link rel="stylesheet" href="css/style.css?<?=time()?>"> 

Uso de la ayuda a que la nueva versión cada vez que se carga la página.

Cuestiones relacionadas