¿Cómo vaciar la memoria caché del navegador mediante programación?
Estoy buscando una manera de vaciar mediante programación el caché del navegador. Hago esto porque la aplicación almacena en caché datos confidenciales y me gustaría eliminarlos cuando presionas "cerrar sesión". Esto sucedería a través del servidor o JavaScript. Por supuesto, todavía se desaconseja el uso del software en computadoras públicas o extranjeras, ya que existen más peligros, como los registradores de claves, que simplemente no se pueden vencer a nivel de software.
Actualización de 2023 : consulte el
Clear-Site-Data
encabezado HTTP, a través del cual el servidor puede indicarle al navegador web de un cliente que borre el caché del sitio web para su dominio/subdominio, independientemente de losCache-Control
encabezados anteriores. Sin embargo, es posible que los cachés intermedios aún tengan los datos almacenados en caché y no respeten el encabezado. (gracias, @nishanthshanmugham)
No hay forma de que un navegador te permita borrar su caché. Sería un gran problema de seguridad si eso fuera posible. Es muy fácil abusar de esto: en el momento en que un navegador admita dicha "función", será el momento en que la desinstale de mi computadora.
Lo que puedes hacer es decirle que no almacene en caché tu página, enviando los encabezados apropiados o usando estas metaetiquetas:
<meta http-equiv='cache-control' content='no-cache'>
<meta http-equiv='expires' content='0'>
<meta http-equiv='pragma' content='no-cache'>
También es posible que desees considerar desactivar la función de autocompletar en los campos del formulario, aunque me temo que existe una forma estándar de hacerlo ( consulta esta pregunta ).
De todos modos, me gustaría señalar que si trabaja con datos confidenciales debería utilizar SSL. Si no está utilizando SSL, cualquier persona con acceso a la red puede rastrear el tráfico de la red y ver fácilmente lo que está viendo su usuario.
El uso de SSL también hace que algunos navegadores no utilicen el almacenamiento en caché a menos que se indique explícitamente que lo hagan. Vea esta pregunta .
Es posible, simplemente puede usar jQuery para sustituir la 'metaetiqueta' que hace referencia al estado de la caché con un controlador/botón de eventos y luego actualizar, fácil.
$('.button').click(function() {
$.ajax({
url: "",
context: document.body,
success: function(s,x){
$('html[manifest=saveappoffline.appcache]').attr('content', '');
$(this).html(s);
}
});
});
NOTA: Esta solución se basa en la caché de aplicaciones que se implementa como parte de la especificación HTML 5. También requiere la configuración del servidor para configurar el manifiesto de App Cache. No describe un método mediante el cual se pueda borrar el caché del navegador "tradicional" mediante un código del lado del cliente o del servidor, lo cual es casi imposible de hacer.
use html en sí. Hay un truco que se puede usar. El truco consiste en agregar un parámetro/cadena al nombre del archivo en la etiqueta del script y cambiarlo cuando realice cambios en el archivo.
<script src="myfile.js?version=1.0.0"></script>
El navegador interpreta la cadena completa como la ruta del archivo, aunque lo que viene después del "?" son parámetros. Entonces, lo que sucede ahora es que la próxima vez que actualice su archivo, simplemente cambie el número en la etiqueta del script en su sitio web (Ejemplo <script src="myfile.js?version=1.0.1"></script>
) y el navegador de cada usuario verá que el archivo ha cambiado y obtendrá una nueva copia.
La mejor idea es generar archivos js con nombre + algo de hash con versión, si necesita borrar el caché, simplemente genere nuevos archivos con un nuevo hash, esto hará que el navegador cargue nuevos archivos.
Aquí hay una sola línea sobre cómo puede eliminar TODO el caché de la red del navegador usando Cache.delete()
caches.keys().then((keyList) => Promise.all(keyList.map((key) => caches.delete(key))))
Funciona en Chrome 40+, Firefox 39+, Opera 27+ y Edge.