Cómo crear un icono en Photoshop png. Lecciones de Photoshop: Cómo hacer un ícono humano profesional en Photoshop. Pon tu icono en la carpeta.

No siempre ni para todos los sitios el almacenamiento en caché es útil para todos o páginas individuales. Esto puede parecer extraño para algunos, porque el almacenamiento en caché reduce la carga en el servidor, especialmente cuando gran actividad y tráfico de visitantes, pero no para aquellos cuyas páginas de sitios o servicios web se actualizan con contenido con demasiada frecuencia, mientras que los visitantes siempre deben recibir lo último y información actualizada cada vez que se cargan las páginas. Dichos recursos web incluyen chats web, votaciones, juegos, noticias, contadores y similares. Este artículo presentará métodos para deshabilitar el almacenamiento en caché de la página del sitio.


No se trata de cómo deshabilitar el caché solo en el navegador, sino de cómo deshabilitar el almacenamiento en caché Contenido del lado del servidor. Probablemente muchas personas conocen métodos para deshabilitar el almacenamiento en caché en los encabezados de las páginas HTML, por ejemplo los mencionados en Wikipedia, como

Además, puede utilizar lo siguiente

La primera línea indica una recomendación para deshabilitar el almacenamiento en caché por completo y la segunda línea le dice al navegador que la página se está utilizando en modo privado, por lo que su contenido no debe almacenarse en caché. Las metaetiquetas en la tercera y cuarta líneas indican que la vida útil de la caché está limitada a max-age=10800 (que equivale a 3 horas) para el navegador y el proxy, respectivamente.

Sin embargo, las recomendaciones del ejemplo anterior son buenas sólo para aquellos propietarios de sitios que no tienen acceso a scripts PHP y son más adecuadas para páginas no dinámicas. Esta, como dicen, es la "última oportunidad", y sólo porque muchos navegadores, y sus numerosas versiones, prestan cada vez menos atención a lo que está escrito en las secciones HEAD de las páginas del sitio web. Cada uno de ellos “se cubre con la manta” y no todos y no siempre cumplen con ningún estándar. En otras palabras, es posible que lo dicho anteriormente no funcione.

Deshabilitar el almacenamiento en caché de páginas en PHP

Una alternativa a esto es deshabilitar el almacenamiento en caché de las páginas del sitio usando scripts PHP, es decir, usando el encabezado(...); , que le permite agregar encabezados de paquetes HTTP parámetros requeridos y directivas. En en este momento últimas versiones navegadores populares y, en consecuencia, los servidores procesan estos encabezados de paquetes HTTP de manera más o menos igual. En este sentido, más fiable y de manera flexible El almacenamiento en caché se desactivará mediante PHP.

A continuación se muestra un ejemplo de una indicación simple del momento en que se almacenan en caché las páginas del sitio:

Sin embargo, en la práctica resultó que esto puede no ser suficiente, y después de numerosos experimentos con diferentes navegadores mayoría la mejor opción deshabilitar el almacenamiento en caché en PHP el enfoque sería así:

En algunos casos puede resultar útil utilizarlo en el parámetro del encabezado. opciones adicionales verificación posterior=0 y verificación previa=0

Header("Control de caché: sin almacenamiento, sin caché, debe revalidar, verificación posterior = 0, verificación previa = 0"); ...

Algunos buscan prohibir el almacenamiento en caché de páginas o imágenes agregando un número aleatorio a los enlaces como parámetro de consulta. Más precisamente, esto no es una prohibición, sino un intento de engañar al navegador diciéndole que debe recargar la página, ya que la URL ya ha sido modificada:

$echo = "Enlace"; $eco = " ";

Es cierto que esto no siempre funciona y no funciona en todas las versiones y tipos de navegadores, y solo puede ayudar en los casos en que los enlaces se generan dinámicamente.

Verificar que el almacenamiento en caché esté deshabilitado

Puede verificar si una página está almacenada en caché o no agregando la hora del servidor en la que se generó. pagina especifica, directamente en el código de la página. Es fácil de hacer con usando PHP

Hora de creación de la página: " . fecha("H:i:s") . ""; ?>

La línea 6 contiene el código fecha("H:i:s") , que muestra la hora exacta del servidor en la que se creó la página. Por lo tanto, con cada solicitud a la página, siempre que el almacenamiento en caché esté completamente deshabilitado, siempre veremos una hora completamente nueva. Si aún se realiza el almacenamiento en caché, cuando solicitudes frecuentes la página contendrá la misma hora.

Prohibir el almacenamiento en caché de páginas usando Apache .htaccess

Recientemente tuve un caso en el que el chat web de repente dejó de funcionar en uno de los portales. O mejor dicho, funcionó, no hubo absolutamente ningún error, pero los usuarios solo vieron sus propios mensajes en él, pero no vieron los mensajes de sus interlocutores. En un intento de corregir la situación, descubrí que la empresa de alojamiento había actualizado la configuración del servidor Apache junto con el proxy de almacenamiento en caché Nginx. Luego probé casi todos los métodos enumerados anteriormente para desactivar el caché, pero nada ayudó. La última esperanza e intento fue recurrir a la ayuda de Apache, intentar utilizar el archivo .htaccess.

Al agregar al archivo .htaccess, que estaba ubicado en el directorio de scripts de chat web, siguientes ajustes, resolví el problema:

Adjunto de encabezado Cache-Control "sin almacenamiento, sin caché, debe revalidar" ExpiresActive On ExpiresDefault "ahora"

Entonces, para aquellos para quienes el problema de prohibir el almacenamiento en caché de las páginas del sitio web es relevante, recomiendo usar el método usando archivos .htaccess servidor apache. Es cierto que esto también funcionará solo si los módulos correspondientes están cargados y conectados en su hosting: mod_expires.so y mod_headers.so. Si están conectados o no, puede verificarlo viendo el archivo de configuración de Apache, el panel de control del hosting o, como último recurso, contactando al soporte técnico del hosting con una pregunta.

LoadModule expires_module module/mod_expires.so LoadModule headers_module module/mod_headers.so AddModule mod_expires.c AddModule mod_headers.c

Si tiene estos módulos conectados, entonces puede manipular el almacenamiento en caché archivos separados, por ejemplo, agregando las siguientes directivas a .htaccess:

ExpiresActive On ExpiresDefault "ahora" Cabecera anexada Cache-Control debe revalidar ExpiresDefault "ahora"

Además, puede especificar el tiempo límite de almacenamiento en caché, por ejemplo:

ExpiresDefault "acceso más 1 mes" # o # ExpiresDefault "acceso más 4 semanas" # o # ExpiresDefault "acceso más 30 días"

Estas opciones de directiva tienen el mismo significado y significado, y limitarán el almacenamiento en caché por un período de 1 mes. También será posible especificar los tipos de archivos de contenido con fecha de vencimiento para el tiempo de almacenamiento en caché o indicando el momento de su modificación:

ExpiresByType text/html "acceso más 1 mes 7 días 12 horas" ExpiresByType image/gif "modificación más 3 horas 15 minutos"

Probablemente eso sea todo por ahora. Espero que la información te sea útil. Si tiene sus propios desarrollos o adiciones, no dude en escribirlos en los comentarios o enviármelos por correo y los agregaré (después de verificar) a este artículo.

Descripción del almacenamiento en caché. Resolver problemas con diferentes navegadores y una descripción de los encabezados de respuesta del servidor responsables del almacenamiento en caché.

Los webmasters a menudo se enfrentan al almacenamiento en caché: los navegadores y los servidores proxy, al intentar acelerar el sitio, intentan mantener tanto gran número documentos en el caché. Si abre una página del sitio en un navegador, luego otra y luego regresa a la primera, con un alto grado de probabilidad el navegador la tomará de su disco (o incluso de RAM), donde guardó la página en su primera visita.

Claramente, esta operación suele ser mucho más rápida que recuperar el mismo documento de la red. Después de todo, para mostrar una página no sólo necesita obtener el código HTML, sino también descargar de la red todos los documentos que la acompañan: archivos CSS, imágenes, scripts formateados como archivos separados, etc. Si busca en las carpetas de caché de su disco (para IE, esta carpeta generalmente se encuentra aquí: "C:\Documentos y configuraciones\ nombre de usuario\Configuración local\Archivos temporales de Internet", para Firefox: "C:\Documentos y configuraciones\ nombre de usuario\Configuración local\Datos de aplicación\Mozilla\Firefox\Profiles\ _cadena_aleatoria_. default\Cache"), entonces notarás cuántos archivos ha guardado tu navegador.

Por supuesto, el caché acelera enormemente el trabajo, pero por otro lado, el caché también puede desempeñar un papel negativo.

Por ejemplo, si la página de chat está almacenada en caché, los usuarios simplemente no verán mensajes nuevos. Los webmasters a menudo consideran que el caché es un mal y luchan contra este mal lo mejor que pueden.

Problema de almacenamiento en caché en Microsoft Internet Explorer

Explorador de Internet almacena en caché las solicitudes GET. Aquellos autores que no estén familiarizados con almacenamiento en caché HTTP, espere que las solicitudes GET no se almacenen en caché o que se pueda omitir la caché, como en el caso de hacer clic en un botón de actualización. En algunas situaciones, evitar el almacenamiento en caché es un error. Una solución es utilizar método POST, que nunca se almacena en caché; sin embargo, está destinado a otras operaciones. Otra solución es utilizar el método. OBTENER solicitud, incluida una cadena de consulta única con cada llamada, como se muestra en el siguiente ejemplo.

Req.open("GET", "xmlprovider.php?hash=" + Math.random());

o instalación Encabezado caduca a una fecha pasada en su secuencia de comandos que genera el contenido XML. En PHP sería así:

// deshabilitar el encabezado de almacenamiento en caché de IE ("Expira: lunes, 26 de julio de 1997, 05:00:00 GMT"); header("Última modificación: " . gmdate("D, d M Y H:i:s") . " GMT"); header("Control de caché: sin caché, debe revalidar"); encabezado("Pragma: sin caché"); ...

¿Te resulta familiar el código PHP? Estoy seguro de que lo escribiste (generalmente usando el método Copiar y pegar) en su trabajo. ¡Pero! Hay un “PERO” muy significativo aquí: sin disminuir de ninguna manera la importancia y autoridad de Wikipedia, solo señalaremos el hecho desafortunado de que este código es INCORRECTO. ¿Quieres asegurarte? ¡Fácilmente!

Comprobando el almacenamiento en caché

Entonces, iniciemos Apache con la configuración predeterminada estándar. Aquí y más utilizamos Apache y PHP. Pero esto de ninguna manera significa que el problema descrito y sus soluciones no estén disponibles en la plataforma de otros servidores, por ejemplo, Microsoft IIS. Entonces, comencemos Apache. Cree una carpeta test-cache vacía en la raíz del servidor y coloque allí el archivo test-1.php con el siguiente contenido:

", fecha("H:i:s"), ""; ?>

Es fácil ver que en el ejemplo anterior estamos intentando deshabilite el almacenamiento en caché según la receta de Wikipedia y simplemente muestre la hora actual.

Artículo relacionado: Alojamiento económico con configuración individual

Ahora intenta ver tu carpeta en el navegador. Para hacer esto, abra su navegador y escriba en la barra de direcciones

¡Excelente! Ahora haga clic en su archivo test-1.php y anote la hora (por ejemplo, coloqué la ventana del navegador al lado del reloj de Windows):

¡Fabuloso! Ahora presione los botones “Atrás” y luego “Adelante” en el navegador:

¡Ups! El tiempo no cambia!!! ¿Qué quiere decir esto? ¡¡¡Sí, sólo que el navegador toma la página del caché!!! ¿Qué pasa con nuestro enciclopédico¿código? ¡Sí, no funciona!

Volvamos a las fuentes originales.

¿Cuál es el problema? El problema es mal uso encabezados de respuesta. En la especificación RFC2616 Hay un capítulo completo dedicado al almacenamiento en caché. Pero, lamentablemente, los webmasters no suelen leer las especificaciones. Entonces, ¿qué significan esos encabezados que acabamos de pasar? Veámoslos. Es muy conveniente hacer esto usando el complemento de la barra de herramientas para desarrolladores web de Firefox: Información. Ver encabezados de respuesta(para IE una herramienta similar se llama DevToolbar):

Entonces pasamos los siguientes encabezados:

Expira: lunes 26 de julio de 1997 a las 05:00:00 GMT- este encabezado establece el tiempo de relevancia de la información. Intentamos pasar una fecha al pasado, creyendo que esto obligará al navegador a cargar la página desde el servidor cada vez. No te obliga, como lo hemos comprobado claramente por experiencia.

Última modificación: sábado 26 de enero de 2008 17:03:02 GMT- Fecha y hora en que se cambió la información de la página. Este encabezado no afecta en absoluto el almacenamiento en caché (¡léalo en RFC2616!), excepto que puede usarse para una solicitud con validadores. Por ejemplo, robot de búsqueda Puede solicitar datos como este:

Eso es, " dame el documento si ha cambiado desde la fecha especificada", y el servidor debería responder con un 200 ("Aquí está el documento, ¡ha cambiado!" o un 304 "No hubo cambios". Pero para que esto funcione, su servidor DEBE enviar el encabezado Última modificación y no solo enviarlo, sino enviar la FECHA CORRECTA en que se modificó el documento Pero nosotros mismos, con nuestras propias manos, y estúpidos enciclopédico¡El código destruyó por completo las últimas esperanzas para esto! Es decir, no solo no prohibimos el caché, sino que también estropeamos completamente los motores de búsqueda (o más bien, ¡A NOSOTROS MISMOS)! Después de todo, transmitiste fecha ACTUAL como fecha último cambio, ¿recordar?

Control de caché: sin caché, debe revalidar- ahora, más cerca del tema. Es este encabezado el que controla el almacenamiento en caché, pero no por sí solo, sino junto con otros. Ahora acabamos de transmitir siguiente comando: "utilizar la información de la siguiente solicitud sin volver a comprobar en el servidor de origen" (Si la directiva no-cache no especifica un nombre de campo, entonces un caché NO DEBE usar la respuesta para satisfacer una solicitud posterior sin una revalidación exitosa con el servidor de origen). Básicamente, en esta forma, este es un comando no para el navegador, sino para el servidor proxy.

Artículo relacionado: Cómo elegir alojamiento para un sitio de WordPress: consejos para principiantes

Pragma: sin caché- diseño anticuado. esto es de versión antigua Protocolo HTTP/1.0. Casi todos los navegadores y servidores proxy lo ignoran. Entonces, vemos que ninguna de nuestras líneas de código PHP realmente deshabilitó el caché. ¿Qué hacer? Esto es lo que:

Deshabilitar el almacenamiento en caché

Vuelva a guardar el archivo test-1.php con el nuevo nombre test-2.php y cámbielo de la siguiente manera:

", fecha("H:i:s"), ""; ?>

Ahora intenta abrir nuestra carpeta de prueba nuevamente. //localhost/test-cache/, haga clic en el nombre test-2.php y ahora haga clic en los botones “Atrás” y “Adelante”. ¡El tiempo cambia cada vez! Y esto significa que el navegador no toma la página del caché cuando avanza/retrocede, sino que la solicita nuevamente al servidor. Que, de hecho, es lo que necesitábamos. Veamos los encabezados de respuesta:

¡Aquí lo tienes! Pasamos dos encabezados:

Control de caché: sin almacenamiento- ¡La página contiene datos privados, no se puede guardar en el caché! (El propósito de la directiva de no almacenamiento es evitar la divulgación o retención involuntaria de información confidencial (por ejemplo, en cintas de respaldo))

Expira: sábado, 26 de enero de 2008 20:31:55 +0300- la relevancia de la página caduca instantáneamente, es decir, ahora.

Y son estos encabezados los que impiden el almacenamiento en caché en el navegador. Pero aún es más correcto agregar instrucciones para servidores proxy al encabezado Cache-Control (archivo test-3.php):

", fecha("H:i:s"), ""; ?>

Prohibición práctica del almacenamiento en caché

Así, aprendimos a desactivar el caché. ¿Esto significa que debes incluir el código anterior en todas tus páginas? ¡De nada! Si necesita desactivar el almacenamiento en caché para todos los archivos de una carpeta (no sólo para php ejecutable scripts) podemos configurar el servidor Apache para enviar los encabezados que necesitamos. Para hacer esto, abra el archivo de configuración del servidor Apache y asegúrese de descomentar siguientes lineas(o descomentarlos usted mismo):

LoadModule expires_module module/mod_expires.so LoadModule headers_module module/mod_headers.so ... AddModule mod_expires.c AddModule mod_headers.c

¡Excelente! Ahora simplemente cree un archivo .htaccess en su carpeta y escriba lo siguiente en él:

# # Deshabilitar el almacenamiento en caché en esta carpeta # Los módulos deben estar habilitados # mod_headers.c y mod_expires.c # # Encabezado Cache-Control Adjunto de encabezado Cache-Control "sin almacenamiento, sin caché, debe revalidar"# Caduca el encabezado ExpiresActive On ExpiresDefault "ahora"

¡Todo! Los encabezados necesarios se transmiten automáticamente y no es necesario escribir nada específicamente en PHP: ¡el caché ya está desactivado! Puede verificar esto fácilmente si observa los encabezados enviados al solicitar CUALQUIER archivo en esta carpeta:

Permiso de almacenamiento en caché

Pero, a pesar de que la inmensa mayoría de los webmasters consideran que el caché es un mal universal, y estan intentando prohibirlo (y, como hemos visto, sin mucho éxito), ¡no es así! Al deshabilitar el almacenamiento en caché, obliga al navegador a recargar sus páginas desde el servidor cada vez, y si el canal de comunicación del usuario es débil, esto puede provocar una notable desaceleración en el uso de su sitio. ¡Sin mencionar el hecho de que esto conduce a un aumento en la carga de su servidor! Si su página o parte de ella se genera a partir de consultas en la base de datos, también aumenta la carga en el servidor de la base de datos, lo que puede tener un impacto extremadamente negativo en el rendimiento de su servidor en su conjunto. Entiendes de lo que estoy hablando, ¡mira, por ejemplo, el trabajo de Odnoklassniki.ru! Algunos webmasters también se jactan de mostrar estas “estadísticas” en la parte inferior de la página: “ Página generada en 0,9 segundos, 9 completadas consultas SQL " ¡Esto no muestra más que una arquitectura de aplicación web absolutamente estúpida!

Los webmasters a menudo se enfrentan al almacenamiento en caché: los navegadores y los servidores proxy, al intentar acelerar la Web para el usuario, intentan almacenar tantos documentos como sea posible en su caché.

A veces, puede ser necesario evitar que el navegador almacene en caché una página, ya que la información que contiene se actualiza cada vez. Esto podría ser la generación de datos según filtros seleccionados u otro contenido que se crea de una forma nueva cada vez. En resumen, hay ocasiones en las que es necesario evitar que un programa insidioso almacene en caché una página. Hoy aprenderemos cómo implementar esto de diferentes maneras, usando PHP, HTML o .htaccess.

Prohibir el almacenamiento en caché de páginas en HTML

Esto se puede hacer usando metaetiquetas.
Prohibición del almacenamiento en caché por parte del navegador y del servidor proxy

Deshabilitar el almacenamiento en caché de páginas, solo navegador

Configurar el almacenamiento en caché durante un tiempo específico para el navegador

Usando el siguiente código, podemos decirle al navegador cuánto tiempo debe mantener el documento en caché. Después de lo cual, se actualizará el caché.

Configurar el almacenamiento en caché durante un tiempo específico para un servidor proxy
Prácticamente igual que en el código anterior, sólo que la indicación es específica del servidor proxy.

Evite el almacenamiento en caché de páginas usando PHP

Prácticamente todo es igual que en el caso de HTML, solo que mostraremos información a través de los encabezados del encabezado. A continuación se explica cómo implementar una denegación absoluta de caché:

", fecha("H:i:s"), ""; ?>

También puedes permitir el almacenamiento en caché durante un tiempo determinado. Por ejemplo, permitamos el almacenamiento en caché durante solo 1 hora.

", fecha("H:i:s"), ""; ?>

Evite el almacenamiento en caché de páginas usando .htaccess

Para que la idea sea más fácil de implementar, todo se puede hacer en el nivel de configuración del servidor Apache. Antes de esto, debemos asegurarnos de que los módulos necesarios estén en funcionamiento. Abra el archivo de configuración de Apache y vea la siguiente imagen:

LoadModule expires_module módulos/mod_expires.so
LoadModule headers_module módulos/mod_headers.so
...
Agregar módulo mod_expires.c
Agregar módulo mod_headers.c

Ahora, en el archivo .htaccess, prohibimos el almacenamiento en caché de los datos de salida. Como sabemos, el archivo .htaccess se distribuirá al directorio en el que se encuentra y a todos los subdirectorios.

# encabezado de control de caché Adjunto de encabezado Cache-Control "sin almacenamiento, sin caché, debe revalidar"# Caduca el encabezado ExpiresActive On ExpiresDefault "ahora"

Es importante tener en cuenta que prohibir completamente el almacenamiento en caché aumenta la carga en el servidor. Por lo tanto, ¡juega con esto con cuidado! Mejor aún, establezca un tiempo específico durante el cual pueda almacenar en caché los documentos. Por ejemplo, configuremos el almacenamiento en caché durante 1 hora:

# encabezado de control de caché Adjunto de encabezado Cache-Control "público"# Caduca el encabezado ExpiresActive On ExpiresDefault "acceso más 1 hora"

A veces, puede ser necesario evitar que el navegador almacene en caché una página, ya que la información que contiene se actualiza cada vez. Esto podría ser la generación de datos según filtros seleccionados u otro contenido que se crea de una forma nueva cada vez. En resumen, hay ocasiones en las que es necesario evitar que un programa insidioso almacene en caché una página. Hoy aprenderemos cómo implementar esto de diferentes maneras, usando PHP, HTML o .htaccess.

Prohibir el almacenamiento en caché de páginas en HTML

Esto se puede hacer usando metaetiquetas. Ahora veremos diferentes opciones para prohibir el almacenamiento en caché.

Prohibición del almacenamiento en caché por parte del navegador y del servidor proxy

Deshabilitar el almacenamiento en caché de páginas, solo navegador

Configurar el almacenamiento en caché durante un tiempo específico para el navegador

Usando el siguiente código, podemos decirle al navegador cuánto tiempo debe mantener el documento en caché. Después de lo cual, se actualizará el caché.

Configurar el almacenamiento en caché durante un tiempo específico para un servidor proxy

Prácticamente igual que en el código anterior, sólo que la indicación es específica del servidor proxy.

Evite el almacenamiento en caché de páginas usando PHP

Prácticamente todo es igual que en el caso de HTML, solo que mostraremos información a través de los encabezados del encabezado. A continuación se explica cómo implementar una denegación absoluta de caché:

", fecha("H:i:s"), ""; ?>

También puedes permitir el almacenamiento en caché durante un tiempo determinado. Por ejemplo, permitamos el almacenamiento en caché durante solo 1 hora.

", fecha("H:i:s"), ""; ?>

Evite el almacenamiento en caché de páginas usando .htaccess

Para que la idea sea más fácil de implementar, todo se puede hacer en el nivel de configuración del servidor Apache. Antes de esto, debemos asegurarnos de que los módulos necesarios estén en funcionamiento. Abra el archivo de configuración de Apache y vea la siguiente imagen:

LoadModule expires_module module/mod_expires.so LoadModule headers_module module/mod_headers.so ... AddModule mod_expires.c AddModule mod_headers.c

Ahora, en el archivo .htaccess, prohibimos el almacenamiento en caché de los datos de salida. Como sabemos, el archivo .htaccess se distribuirá al directorio en el que se encuentra y a todos los subdirectorios.

# encabezado de control de caché Adjunto de encabezado Cache-Control "sin almacenamiento, sin caché, debe revalidar"# Caduca el encabezado ExpiresActive On ExpiresDefault "ahora"

Es importante tener en cuenta que prohibir completamente el almacenamiento en caché aumenta la carga en el servidor. Por lo tanto, ¡juega con esto con cuidado! Mejor aún, establezca un tiempo específico durante el cual pueda almacenar en caché los documentos. Por ejemplo, configuremos el almacenamiento en caché durante 1 hora:

# encabezado de control de caché Adjunto de encabezado Cache-Control "público"# Caduca el encabezado ExpiresActive On ExpiresDefault "acceso más 1 hora"

Conclusión

Un poco sobre el almacenamiento en caché

Los webmasters a menudo se enfrentan al almacenamiento en caché: los navegadores y los servidores proxy, al intentar acelerar la Web para el usuario, intentan almacenar tantos documentos como sea posible en el caché. Si abre una página del sitio en un navegador, luego otra y luego regresa a la primera, con un alto grado de probabilidad el navegador la tomará de su disco (o incluso de la RAM), donde guardó la página en su primera visita. Claramente, esta operación suele ser mucho más rápida que recuperar el mismo documento de la red. Después de todo, para mostrar una página no sólo necesita obtener el código HTML, sino también descargar de la red todos los documentos que la acompañan: archivos CSS, imágenes, scripts formateados como archivos separados, etc. Si busca en las carpetas de caché de su disco (para IE, esta carpeta generalmente se encuentra aquí: "C:\Documentos y configuraciones\ nombre de usuario\Configuración local\Archivos temporales de Internet", para Firefox: "C:\Documentos y configuraciones\ nombre de usuario\Configuración local\Datos de aplicación\Mozilla\Firefox\Profiles\ _cadena_aleatoria_. default\Cache"), entonces notarás cuántos archivos ha guardado tu navegador.

Por supuesto, el caché acelera enormemente el trabajo, pero por otro lado, el caché también puede desempeñar un papel negativo. Por ejemplo, si una página, por ejemplo un chat, está almacenada en caché, los usuarios simplemente no verán los mensajes nuevos. Los webmasters a menudo consideran que el caché es un mal y luchan contra este mal lo mejor que pueden. En muchos libros (aunque los webmasters no suelen leer libros y prefieren foros y otros recursos en línea), en muchos artículos se puede encontrar código como este. He aquí un ejemplo:

Problema de almacenamiento en caché en Microsoft Internet Explorer

Internet Explorer almacena en caché las solicitudes GET. Aquellos autores que no están familiarizados con el almacenamiento en caché HTTP esperan que las solicitudes GET no se almacenen en caché o que se pueda omitir el caché, como en el caso de hacer clic en un botón de actualización. En algunas situaciones, evitar el almacenamiento en caché es un error. Una solución es utilizar el método POST, que nunca se almacena en caché; sin embargo, está destinado a otras operaciones. Otra solución es utilizar el método de solicitud GET, que incluye una cadena de consulta única con cada llamada, como se muestra en el siguiente ejemplo.

req.open("GET", "xmlprovider.php?hash=" + Math.random());

o establecer el encabezado Expires en una fecha pasada en su secuencia de comandos que genera el contenido XML. En PHP sería así:

// deshabilitar el encabezado de almacenamiento en caché de IE ("Expira: lunes, 26 de julio de 1997, 05:00:00 GMT"); header("Última modificación: " . gmdate("D, d M Y H:i:s") . " GMT"); header("Control de caché: sin caché, debe revalidar"); encabezado("Pragma: sin caché"); ...

¿Te resulta familiar el código PHP? Estoy seguro de que lo escribiste (generalmente usando el método Copiar-Pasta) en su trabajo. ¡Pero! Hay un “PERO” muy significativo aquí: sin disminuir de ninguna manera la importancia y autoridad de Wikipedia, solo señalaremos el hecho desafortunado de que este código es INCORRECTO. ¿Quieres asegurarte? ¡Fácilmente!

Comprobando el almacenamiento en caché

Entonces, iniciemos Apache con la configuración predeterminada estándar. Aquí y más utilizamos Apache y PHP. Pero esto de ninguna manera significa que el problema descrito y sus soluciones no estén disponibles en la plataforma de otros servidores, por ejemplo, Microsoft IIS. Entonces, comencemos Apache. Cree una carpeta test-cache vacía en la raíz del servidor y coloque allí el archivo test-1.php con el siguiente contenido:

", fecha("H:i:s"), ""; ?>

Es fácil ver que en el ejemplo anterior estamos intentando deshabilite el almacenamiento en caché según la receta de Wikipedia y simplemente muestre la hora actual.

Ahora intenta ver tu carpeta en el navegador. Para hacer esto, abra su navegador y escriba en la barra de direcciones

¡Excelente! Ahora haga clic en su archivo test-1.php y anote la hora (por ejemplo, coloqué la ventana del navegador al lado del reloj de Windows):

¡Fabuloso! Ahora presione los botones “Atrás” y luego “Adelante” en el navegador:

¡Ups! El tiempo no cambia!!! ¿Qué quiere decir esto? ¡¡¡Sí, sólo que el navegador toma la página del caché!!! ¿Qué pasa con nuestro enciclopédico¿código? ¡Sí, no funciona!

Volvamos a las fuentes originales.

¿Cuál es el problema? El problema es el uso incorrecto de los encabezados de respuesta. La especificación RFC2616 dedica un capítulo completo al almacenamiento en caché. Pero, lamentablemente, los webmasters no suelen leer las especificaciones. Entonces, ¿qué significan esos encabezados que acabamos de pasar? Veámoslos. Es muy conveniente hacer esto usando el complemento de la barra de herramientas para desarrolladores web de Firefox: Información. VistaRespuestaEncabezados(para IE una herramienta similar se llama DevToolbar):

Entonces pasamos los siguientes encabezados:

Vence: Lun, 26 de julio1997 05:00:00 GMT— este encabezado establece el tiempo de relevancia de la información. Intentamos pasar una fecha al pasado, creyendo que esto obligará al navegador a cargar la página desde el servidor cada vez. No te obliga, como lo hemos comprobado claramente por experiencia.

Último-Modificado: Se sentó, 26 de enero2008 17:03:02 GMT— Fecha y hora en que se cambió la información de la página. Este encabezado no afecta en absoluto el almacenamiento en caché (¡léalo en RFC2616!), excepto que puede usarse para una solicitud con validadores. Por ejemplo, un robot de búsqueda puede solicitar datos como este:
OBTENER /megapage.html HTTP/1.1 If-Mofidied-Desde: sábado 26 de enero de 2008 17:03:02 GMT

Eso es, " dame el documento si ha cambiado desde la fecha especificada", y el servidor debería responder con un 200 ("Aquí está el documento, ¡ha cambiado!" o un 304 "No hubo cambios". Pero para que esto funcione, su servidor DEBE enviar el encabezado Última modificación y no solo enviarlo, sino enviar la FECHA CORRECTA en que se modificó el documento Pero nosotros mismos, con nuestras propias manos, y estúpidos enciclopédico¡El código destruyó por completo las últimas esperanzas para esto! Es decir, no solo no prohibimos el caché, sino que también estropeamos completamente los motores de búsqueda (o más bien, ¡A NOSOTROS MISMOS)! Después de todo, pasaste la fecha ACTUAL como fecha del último cambio, ¿recuerdas?

Control de caché: sin caché, debe revalidar- ahora, más cerca del tema. Es este encabezado el que controla el almacenamiento en caché, pero no por sí solo, sino junto con otros. Ahora simplemente pasamos el siguiente comando: “Si la directiva sin caché no especifica un nombre de campo, entonces un caché NO DEBE usar la respuesta para satisfacer una solicitud posterior sin una revalidación exitosa con el servidor de origen). Básicamente, en esta forma, este es un comando no para el navegador, sino para el servidor proxy.

Pragma: sin caché- diseño anticuado. Esto es de la versión anterior del protocolo HTTP/1.0. Casi todos los navegadores y servidores proxy lo ignoran. Entonces, vemos que ninguna de nuestras líneas de código PHP realmente deshabilitó el caché. ¿Qué hacer? Esto es lo que:

Deshabilitar el almacenamiento en caché

Vuelva a guardar el archivo test-1.php con el nuevo nombre test-2.php y cámbielo de la siguiente manera:

", fecha("H:i:s"), ""; ?>

Ahora intenta abrir nuestra carpeta de prueba nuevamente. http://localhost/test-cache/, haga clic en el nombre test-2.php y ahora haga clic en los botones “Atrás” y “Adelante”. ¡El tiempo cambia cada vez! Y esto significa que el navegador no toma la página del caché cuando avanza/retrocede, sino que la solicita nuevamente al servidor. Que, de hecho, es lo que necesitábamos. Veamos los encabezados de respuesta:

¡Aquí lo tienes! Pasamos dos encabezados:

Cache-Control: No-almacenar— ¡la página contiene datos privados; no se puede guardar en el caché! (El propósito de la directiva de no almacenamiento es evitar la divulgación o retención involuntaria de información confidencial (por ejemplo, en cintas de respaldo))

Vence: Se sentó, 26 de enero 2008 20:31:55 +0300 — la relevancia de la página caduca instantáneamente, es decir, ahora.

Y son estos encabezados los que impiden el almacenamiento en caché en el navegador. Pero aún es más correcto agregar instrucciones para servidores proxy al encabezado Cache-Control (archivo test-3.php):

", fecha("H:i:s"), ""; ?>

Prohibición práctica del almacenamiento en caché

Así, aprendimos a desactivar el caché. ¿Esto significa que debes incluir el código anterior en todas tus páginas? ¡De nada! Si necesita deshabilitar el almacenamiento en caché en todos los archivos de una carpeta (no solo los ejecutables) scripts php) podemos configurar el servidor Apache para enviar los encabezados que necesitamos. Para hacer esto, abra el archivo de configuración del servidor Apache y asegúrese de que las siguientes líneas no estén comentadas (o descomentelas usted mismo):

LoadModule expires_module module/mod_expires.so LoadModule headers_module module/mod_headers.so ... AddModule mod_expires.c AddModule mod_headers.c

¡Excelente! Ahora simplemente cree un archivo .htaccess en su carpeta y escriba lo siguiente en él:

# # Deshabilitar el almacenamiento en caché en esta carpeta # Los módulos deben estar habilitados # mod_headers.c y mod_expires.c # # Encabezado Cache-Control Adjunto de encabezado Cache-Control "sin almacenamiento, sin caché, debe revalidar"# Caduca el encabezado ExpiresActive On ExpiresDefault "ahora"

¡Todo! Los encabezados necesarios se transfieren automáticamente y no es necesario escribir nada específicamente en PHP: ¡el caché ya está desactivado! Puede verificar esto fácilmente si observa los encabezados enviados al solicitar CUALQUIER archivo en esta carpeta:

Permiso de almacenamiento en caché

Pero, a pesar de que la inmensa mayoría de los webmasters consideran que el caché es un mal universal, y estan intentando prohibirlo (y, como hemos visto, sin mucho éxito), ¡no es así! Al deshabilitar el almacenamiento en caché, obliga al navegador a recargar sus páginas desde el servidor cada vez, y si el canal de comunicación del usuario es débil, esto puede provocar una notable desaceleración en el uso de su sitio. ¡Sin mencionar el hecho de que esto conduce a un aumento en la carga de su servidor! Si su página o parte de ella se genera a partir de consultas en la base de datos, también aumenta la carga en el servidor de la base de datos, lo que puede tener un impacto extremadamente negativo en el rendimiento de su servidor en su conjunto. Sabes de lo que hablo, por ejemplo, mira el trabajo. www.odnoklassniki.ru! Algunos webmasters también se jactan de mostrar estas “estadísticas” en la parte inferior de la página: “ Página generada en 0,9 segundos, 9 completadasSQLsolicitudes" ¡Esto no muestra más que una arquitectura de aplicación web absolutamente estúpida!

Entonces, por el contrario, ¡intentemos descargar el servidor y acelerar el trabajo de nuestro usuario! Y el caché en este asunto es uno de herramientas poderosas! Bueno, por favor dígame, ¿con qué frecuencia cambia su página "Acerca de la empresa"? O qué pasa si un usuario ve tus noticias (“ ¡Hurra! Nos mudamos a motor nuevo "") ¿UNA HORA DESPUÉS? Entonces, ¿por qué prohibir el almacenamiento en caché de dichas páginas?

", fecha("H:i:s"), ""; ?>

Ahora ábralo usando un navegador, recuerde la hora e intente seguir diferentes enlaces a este archivo. ¡La hora no cambia, incluso si cierra el navegador, lo abre y vuelve a hacer clic en el nombre del archivo! En una hora, este archivo se eliminará del caché. Es decir, dentro de una hora para el usuario, su script se ejecutará UNA VEZ, el resto del tiempo, la página se cargará desde el caché local ¡CON LA MÁXIMA VELOCIDAD POSIBLE! ¡E imagina cuánto disminuirá la carga en tu servidor! ¡Y eso son solo dos líneas de código!

O puedes prescindir de PHP por completo. Cree un archivo .htaccess en la carpeta e ingrese lo siguiente en él:

# # Habilitar el almacenamiento en caché en esta carpeta # Requiere que los módulos estén habilitados # mod_headers.c y mod_expires.c # # Encabezado Cache-Control Adjunto de encabezado Cache-Control "público"# Caduca el encabezado ExpiresActive On ExpiresDefault "acceso más 1 hora"

El resultado, como suele decirse, es visible a simple vista. Esto es especialmente efectivo para gráficos de sitios, para páginas que rara vez contienen contenido cambiable o para páginas visitadas con frecuencia, por ejemplo, para la página de inicio.

Sólo una recomendación: primero depure completamente su sitio y solo luego habilite el almacenamiento en caché. De lo contrario, corre el riesgo de ponerse gris mientras busca errores y desilusionarse por completo con las tecnologías web :)
¡Buena suerte y buena suerte con el almacenamiento en caché!




Arriba