Nota:
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
La posibilidad de almacenar en la caché una página o un control de usuario define con qué dispositivos de Internet compatibles con HTTP 1.1 se puede almacenar un documento en caché. Entre estos dispositivos se incluyen el cliente que efectúa la solicitud, el servidor Web que la atiende y cualquier otro dispositivo con almacenamiento caché que se encuentre en el trayecto de la solicitud o de la respuesta, por ejemplo un servidor proxy. Cuando un servidor Web envía una respuesta, transmite un encabezado HTTP Cache-Control que, entre otras cosas, define los dispositivos en los que el documento puede almacenarse en caché. ASP.NET define estos valores en la enumeración HttpCacheability. Esta enumeración tiene seis valores, cuatro valores que se asignan directamente a las opciones del encabezado HTTP Cache-Control y dos valores especiales, denominados HttpCacheability.ServerAndPrivate y HttpCacheability.ServerAndNoCache. ServerAndPrivate permite almacenar la respuesta en la caché del servidor de origen y del cliente que efectúa la solicitud. ServerAndNoCache sólo permite almacenar la respuesta en la caché del servidor de origen.
En función de las necesidades de la aplicación, es posible definir qué dispositivos pueden almacenar páginas específicas en caché y cuáles no. Por ejemplo, puede ser conveniente que las opciones de almacenamiento en caché para una página de inicio de sesión de usuario sean diferentes de las de una página que muestre la selección de productos de un catálogo. En el caso de la página de inicio, por motivos de seguridad, sólo deberá almacenarse la página en la caché del servidor, mientras que la página del catálogo se podrá almacenar en la caché de cualquier dispositivo que admita esta opción.
Es posible determinar si una página se debe almacenar o no en caché de forma declarativa si se incluye el atributo Location en la directiva @ OutputCache y se especifica uno de los valores de enumeración de OutputCacheLocation.
Para establecer si una página se almacenará o no en caché mediante programación, utilice el método HttpCachePolicy.SetCacheability para especificar un valor de HttpCacheability para la página. El acceso a este método se obtiene a través de la propiedad HttpResponse.Cache, que a su vez se obtiene con la sintaxis Response.Cache de la clase de código subyacente de la página o del bloque de declaración de código.
Nota Si utiliza la directiva @ OutputCache para establecer si una página se almacena en caché o no, debe incluir también los atributos Duration, VaryByParam y Location. El atributo Duration debe tener un valor mayor que cero. Puede establecer en None el valor del atributo VaryByParam si no desea utilizar la funcionalidad que ofrece. Para obtener más información, vea Configurar la caducidad del almacenamiento de páginas en caché y Almacenar en caché múltiples versiones de una página.
Sin embargo, si emplea la clase HttpCachePolicy para establecer si la página se guarda en caché y ha establecido una directiva de validación, no es necesario que establezca la caducidad.
Para establecer si una página se almacena en caché de forma declarativa
Incluya una directiva @ OutputCache en el archivo .aspx y defina los atributos requeridos Duration y VaryByParam.
Incluya el atributo Location en la directiva @ OutputCache y establezca en él uno de los valores admitidos. Los valores admitidos son Any, Client, Downstream, Server o None.
Nota El valor predeterminado es Any. Si no define el atributo Location, la página podrá almacenarse en caché en todas las aplicaciones de red implicadas en la respuesta que lo admitan. Entre ellas se encuentran el cliente que efectúa la solicitud, el servidor de origen y todos los servidores proxy por los que pasa la respuesta.
Para establecer si una página se almacena en caché mediante programación
En el bloque de declaración de código o en el archivo de la clase de código subyacente, utilice la sintaxis Response.Cache para obtener acceso al método HttpCachePolicy.SetCacheability. En el código siguiente se establece Public en el encabezado HTTP Cache-Control.
Response.Cache.SetCacheability(HttpCacheability.Public); [Visual Basic] Response.Cache.SetCacheability(HttpCacheability.Public)Nota Si establece la posibilidad de almacenamiento en caché en HttpCacheability.NoCache o en HttpCacheability.ServerAndNoCache, el cliente que efectúa la solicitud no almacenará las páginas en la carpeta Historial. Por ejemplo, cada vez que el usuario haga clic en un botón de avance o retroceso, se solicitará una nueva versión de la respuesta. Este comportamiento se puede modificar si se establece el método HttpCachePolicy.SetAllowResponseInBrowserHistory como true.
Response.Cache.SetAllowResponseInBrowserHistory(true); [Visual Basic] Response.Cache.SetAllowResponseInBrowserHistory(true)Si se establece para el almacenamiento en caché un valor distinto de NoCache o ServerAndNoCache, ASP.NET omite el valor establecido por el método SetAllowResponseInBrowserHistory.
Vea también
Almacenar en caché páginas de ASP.NET | HttpCacheability (Enumeración) | HttpResponse (Clase) | @ OutputCache (Directiva)