RUPTUBBE

ruptubbe

Este truco sirve para evitar que el explorador guarde las páginas en cache.


Hay que añadir estas cabeceras en el page load de la página:


Response.AddHeader("cache-control", "private")


Response.AddHeader("pragma", "no-cache")


Response.AddHeader("Cache-Control", "must-revalidate")


Response.AddHeader("Cache-Control", "no-cache")

Cache

De Wikipedia, la enciclopedia libre

(Redirigido desde Caché)
Diagrama de una memoria cache de CPU.

En informática, una cache (a menudo incorrectamente escrito "caché") es un conjunto de datos duplicados de otros originales, con la propiedad de que los datos originales son costosos de acceder, normalmente en tiempo, respecto a la copia en el cache. Cuando se accede por primera vez a un dato, se hace una copia en el cache; los accesos siguientes se realizan a dicha copia, haciendo que el tiempo de acceso medio al dato sea menor.

El término cache puede utilizarse también para una zona de memoria de disco denominado cache de disco (Disk cache o Cache buffer en inglés).

Contenido

[ocultar]

Nombre [editar]

La palabra procede de la voz inglesa cache (/kæʃ/; "escondite secreto para guardar mercancías, habitualmente de contrabando") y esta a su vez de la francesa cache, (/kaʃ/; "escondrijo o escondite"). A menudo, en español se escribe erróneamente con tilde sobre la "e" por pensarse que se trata de la misma palabra que "caché" ("distinción o elegancia" o "cotización de un artista"), proveniente de un étimo también francés, pero totalmente distinto: cachet, (/ka'ʃɛ/; "sello" o "salario"). En la literatura especializada en Arquitectura de Computadores (como, entre otros, las traducciones de los libros de William Stallings, Andrew S. Tanenbaum, John L. Hennessy y David A. Patterson) se emplea siempre la palabra sin tilde.

Memoria Cache o RAM Cache [editar]

Un cache es un sistema especial de almacenamiento de alta velocidad. Puede ser tanto un área reservada de la memoria principal como un dispositivo de almacenamiento de alta velocidad independiente. Hay dos tipos de cache frecuentemente usados en las computadoras personales: memoria cache y cache de disco. Una memoria cache, llamada también a veces almacenamiento cache o RAM cache, es una parte de memoria RAM estática de alta velocidad (SRAM) más que la lenta y barata RAM dinámica (DRAM) usada como memoria principal. La memoria cache es efectiva dado que los programas acceden una y otra vez a los mismos datos o instrucciones. Guardando esta información en SRAM, la computadora evita acceder a la lenta DRAM.

Cuando un dato es encontrado en la cache, se dice que se ha producido un impacto (hit), siendo un cache juzgado por su tasa de impactos (hit rate). Los sistemas de memoria cache usan una tecnología conocida por cache inteligente en el cual el sistema puede reconocer cierto tipo de datos usados frecuentemente. Las estrategias para determinar qué información debe de ser puesta en el cache constituyen uno de los problemas más interesantes en la ciencia de las computadoras. Algunas memorias cache están construidas en la arquitectura de los microprocesadores. Por ejemplo, el procesador Pentium II tiene una cache L2 de 512 Kbytes.

El cache de disco trabaja sobre los mismos principios que la memoria cache, pero en lugar de usar SRAM de alta velocidad, usa la convencional memoria principal. Los datos más recientes del disco duro a los que se ha accedido (así como los sectores adyacentes) se almacenan en un buffer de memoria. Cuando el programa necesita acceder a datos del disco, lo primero que comprueba es la cache del disco para ver si los datos ya están ahí. La cache de disco puede mejorar drásticamente el rendimiento de las aplicaciones, dado que acceder a un byte de datos en RAM puede ser miles de veces más rápido que acceder a un byte del disco duro.

Composición interna [editar]

La memoria cache está estructurada por celdas, donde cada celda almacena un byte. La entidad básica de almacenamiento la conforman las filas, llamados también líneas de cache. Por ejemplo, una cache L2 de 512 KB se distribuye en 16.384 filas y 63 columnas

Cuando se copia o se escribe información de la RAM por cada movimiento siempre cubre una línea de cache.

La memoria cache tiene incorporado un espacio de almacenamiento llamado Tag RAM, que indica a qué porción de la RAM se halla asociada cada línea de cache, es decir, traduce una dirección de RAM en una línea de cache concreta.

Diseño [editar]

En el diseño de la memoria cache se deben considerar varios factores que influyen directamente en el rendimiento de la memoria y por lo tanto en su objetivo de aumentar la velocidad de respuesta de la jerarquía de memoria. Estos factores son las políticas de ubicación, extracción, reemplazo, escritura y el tamaño de la cache y de sus bloques.

Política de ubicación [editar]

Decide dónde debe colocarse un bloque de memoria principal que entra en la memoria cache. Las más utilizadas son:

  • Directa: Al bloque n-ésimo de memoria principal le corresponde la posición n módulo k donde k es el número de bloques de la memoria cache.
  • Asociativa: Cualquier bloque de memoria principal puede ir en cualquier lado del bloque de memoria cache.
  • Asociativa por conjuntos: La memoria cache se divide en n conjuntos de bloques, así al bloque i-ésimo de memoria principal le corresponde el conjunto i módulo (k/n) donde k es el número de bloques de memoria cache. Dicho bloque de memoria podrá ubicarse en cualquier posición dentro del conjunto asociado de la memoria cache.

Política de extracción [editar]

La política de extracción determina cuándo y qué bloque de memoria principal hay que traer a memoria cache. Existen dos políticas muy extendidas:

  • Por demanda: Un bloque sólo se trae a memoria cache cuando ha sido referenciado y se produzca un fallo.
  • Con prebúsqueda: Cuando se referencia el bloque i-ésimo de memoria principal, se trae además el bloque (i+1)-esimo. Esta política se basa en la propiedad de localidad espacial de los programas.

Política de reemplazo [editar]

(Ver también Algoritmos de reemplazo de páginas ) Determina qué bloque de memoria cache debe abandonarla cuando no existe espacio disponible para un bloque entrante. Básicamente hay cuatro políticas que son:

  • Aleatoria: El bloque es reemplazado de forma aleatoria.
  • FIFO: Se usa un algoritmo First In First Out FIFO (PEPS, primero entrado primero salido en español) para determinar qué bloque debe abandonar la cache. Este algoritmo generalmente es poco eficiente.
  • Menos recientemente usado (LRU): Se sustituye el bloque que hace más tiempo que no se ha utilizado.
  • Menos frecuentemente usado (LFU): Se reemplaza el bloque que se ha usado con menos frecuencia.

Siendo la Aleatoria y la LRU las de mejor rendimiento.

Política de escritura [editar]

Determina cuándo se actualiza la información en memoria principal cuando se ha escrito en memoria cache. Existen dos políticas principales:

  • Escritura inmediata o escritura directa: En inglés Write Through. Cuando se escribe en un bloque que se encuentra en memoria cache, la información se modifica también simultáneamente en memoria principal, manteniendo así la coherencia en todo momento. Suele combinarse con la técnica de "No carga en escritura" (No Write Allocation) que significa que, cuando haya que escribir en un bloque que no se encuentra en la cache, la modificación se realizará únicamente en memoria principal, sin traer dicho bloque a cache, y además sólo se actualizará la palabra concreta que haya cambiado.
  • Escritura aplazada o post-escritura: En inglés Write Back. Cuando se escribe en un bloque que se encuentra en memoria cache, queda marcado como basura usando un bit especial llamado normalmente dirty bit o bit de basura. Cuando el bloque sea desalojado de memoria cache (mediante la correspondiente política de reemplazo), se comprueba el bit de basura, y si está activado se escribe la información de dicho bloque en memoria principal. Esta política suele combinarse con la técnica de "Carga en escritura" (Write Allocation), que significa que, cuando haya que escribir en un bloque que no se encuentra en la cache, traeremos a cache el bloque en cuestión y lo modificaremos ahí.

0 comentarios:

Publicar un comentario