php - limpiar - Forzar actualización de caché después de la implementación
meta limpiar cache (3)
¿Hay alguna manera de forzar que la memoria caché de un cliente vuelva a cargar un archivo HTML si no puede cambiar el URI que hace referencia a ese archivo (por ejemplo, no puede agregar un parámetro de marca de tiempo)?
Aquí está mi situación:
- Un plugin desplegado para 1000 usuarios.
- Ese complemento carga
example.com/page.html
que llama ascript.js
- El recurso URI
example.com/page.html
no se puede cambiar (sin actualizaciones de complementos) -
page.html
ha sido cambiado. Necesito borrar el antiguopage.html
del caché de los usuarios para que pueda cargar el nuevopage.html
.
¿Algunas ideas? Htaccess? ¿La API de PHP a la que llama el page.html
antiguo y nuevo?
¡Gracias!
Bueno, si la página ya está almacenada en caché por un navegador, es difícil decirle que no use su versión almacenada en caché porque probablemente no se molestará en volver a verificar antes de determinar que su versión almacenada en caché está obsoleta. Solo tendrás que enviar una carta de correo a todos tus usuarios informándoles que presionen ctrl + f5 :)
Sin embargo, existe la posibilidad de que el navegador al menos intente una solicitud HEAD para verificar la marca de tiempo modificada antes de que sirva su versión en caché. En este caso lo siguiente te ayudará.
Los navegadores negocian su contenido desde su servidor web utilizando encabezados estándar HTTP. En el futuro, si desea indicar a un navegador que no almacene en caché un archivo, debe enviar los encabezados HTTP apropiados. Si desea hacer esto en PHP, puede usar la función de header
para enviar los encabezados HTTP apropiados al navegador:
header(''Cache-Control: no-cache'');
header(''Pragma: no-cache'');
Si tiene que hacerlo a través de HTML, puede hacer lo siguiente en el encabezado de su página:
<meta http-equiv="Expires" content="Tue, 01 Jan 1995 12:12:12 GMT">
<meta http-equiv="Pragma" content="no-cache">
Sin embargo, no hay forma de asegurarse de que el navegador cumpla con su solicitud de no almacenar una página en caché. Hay otras cosas como eTags y otras cosas, pero, francamente, no creo que eso te ayude si la página ya está en caché.
ACTUALIZAR
De la especificación HTTP / 1.1 en la capacidad de caché de la respuesta :
Si no hay un validador de caché ni un tiempo de expiración explícito asociado con una respuesta, no esperamos que se almacene en caché, pero ciertos cachés PUEDEN violar esta expectativa (por ejemplo, cuando hay poca o ninguna conectividad de red disponible).
Puede cambiar el nombre del archivo, por ejemplo page_v2.html, lo que hará que el borwer cargue la página como una nueva página.
Quizás PHP podría usarse para agregar una marca de tiempo a la llamada de javascript. A continuación, puede ejecutar esto para la duración ........... Por ejemplo:
check_if_cache_should_be_disabled.php
<?php $deployment_flag = true; // Uncomment this if you want to disable normal cache. //$deployment_flag = false // Uncomment this if you want to enable normal cache. ?>
page.php
<script src="/js/script.js<?php require(''check_if_cache_should_be_disabled.php''); // File Get Contents can be used for a remote server //file_get_contents(''http://yourserver.com/check_if_cache_should_be_disabled.php''); if ($deployment_flag == true) { print ( ''?ts=''.date() ); } ?>"></script>