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.
Cuando se utilizan los métodos de HTTP GET y POST para recopilar información de los usuarios, se sabe que pueden generar respuestas diferentes, dependiendo de los datos proporcionados por el usuario. Las solicitudes GET con cadenas de consulta y las solicitudes POST están asociadas a formularios HTML con los que puede recopilarse información de los usuarios. Es posible almacenar en caché múltiples versiones de respuestas de páginas basadas en estos parámetros. Para ello puede, se puede utilizar el atributo VaryByParam de la directiva @ OutputCache o la propiedad HttpCachePolicy.VaryByParams.
Para almacenar en caché múltiples versiones del resultado de una página de forma declarativa según los parámetros de una cadena de consulta o un formulario POST
Incluya una directiva @ OutputCache en el archivo .aspx que desee almacenar en caché. Asegúrese de establecer en el atributo requerido Duration un valor mayor que cero.
Utilice el atributo VaryByParam para especificar el parámetro de cadena de consulta o formulario POST del que dependa la versión de la página que se debe obtener. Al incluir el ejemplo siguiente al principio de un archivo .aspx, se almacenarán en la caché versiones distintas del resultado de una página por cada solicitud que llegue con un valor distinto para el parámetro
City.<%@ OutputCache duration="60" varybyparam="City" %>Nota Si desea modificar la caché de resultados en función de varios parámetros, defínalos en el atributo VaryByParam usando una lista delimitada por punto y coma. Si desea modificar la caché en función de los valores de todos los parámetros, especifique un asterisco (*) en el atributo.
Para almacenar en caché múltiples versiones del resultado de una página mediante programación según los parámetros de una cadena de consulta o un formulario POST
En el bloque de declaración de código o en la clase de código subyacente de la página, utilice la sintaxis Response.Cache para establecer la caducidad y las directivas de visibilidad para el contenido de la página almacenado en la caché. Para ello puede utilizar los métodos HttpCachePolicy.SetExpires y HttpCachePolicy.SetCacheability, respectivamente.
En el mismo código, especifique el nombre del parámetro como argumento para la propiedad VaryByParams y establezca como true esta propiedad. En el código siguiente se almacenan en caché múltiples versiones de una página cuando llegan al servidor solicitudes con valores distintos en el parámetro
City.Response.Cache.VaryByParams["City"] = true; [Visual Basic] Response.Cache.VaryByParams("City") = trueNota Si desea modificar la caché de resultados en función de varios parámetros, inclúyalos en una lista delimitada por punto y coma en el argumento VaryByParams. Si desea modificar la caché en función de los valores de todos los parámetros, especifique un asterisco (*) en el atributo.
En el ejemplo siguiente se muestra cómo presentar un resultado de página diferente en función de los parámetros
CityyZipCode.Response.Cache.VaryByParams["City;ZipCode"] = true; [Visual Basic] Response.Cache.VaryByParams("City;ZipCode") = true
En el ejemplo siguiente se detalla cómo se almacenan en caché las distintas versiones de una página dependiendo de las solicitudes entrantes que tienen distintos valores en los parámetros de un formulario POST o de una cadena de consulta.
Una aplicación contiene un archivo .aspx, Mycache.aspx, y se especifica que deben almacenarse en caché distintas versiones de la página, basadas en un parámetro denominado city. Llegan cuatro solicitudes con cadenas de consulta asociadas: dos de ellas especifican parámetros count y cuatro incluyen parámetros city.
https://www.microsoft.com/caching/mycache.aspx?count=10&city=dallas
https://www.microsoft.com/caching/mycache.aspx?count=10&city=newyork
https://www.microsoft.com/caching/mycache.aspx?city=dallas
https://www.microsoft.com/caching/mycache.aspx?city=seattle
Como sólo se ha indicado que la caché de resultados varíe según el parámetro city, se almacenarán en caché tres versiones de la página: una para dallas, otra para newyork y una tercera para seattle. La primera solicitud, que contiene el valor de parámetro dallas, hace que se almacene en caché una versión de la página, mientras que la tercera solicitud, que también tiene el valor dallas, obtiene la versión almacenada en la caché de resultados. Durante el tiempo en que estas versiones permanezcan en la caché, las solicitudes que contengan parámetros city con los valores dallas, new york o seattle se atenderán desde la caché de resultados.
Si se especifica que la caché de resultados puede variar según los parámetros city y count, se almacenarán cuatro versiones de la página. Esto se debe a que la primera solicitud contiene un parámetro de cadena de consulta count, mientras que la tercera no lo incluye. Si se especifica que la caché debe variar según todos los parámetros posibles, se creará una entrada en la caché de resultados por cada solicitud que tenga una combinación única de valores de los parámetros. En el ejemplo, esto también hace que se almacenen en caché cuatro versiones de la página.
Nota Los parámetros de cadena de consulta GET o de formulario POST con parejas idénticas de clave y valor se atienden desde la versión en caché de la página mientras ésta no haya caducado, independientemente del orden en que se pasen los parámetros. Como los parámetros de cadena de consulta GET y de formulario POST hacen distinción entre mayúsculas y minúsculas, si el valor del parámetro tiene una combinación de mayúsculas y minúsculas diferente, ASP.NET lo considerará distinto del original almacenado en la caché y almacenará una nueva versión de la página en la caché de resultados.
Vea también
@ OutputCache | Almacenar en caché páginas de ASP.NET | HttpApplication.GetVaryByCustomString (Método) | VaryByParams | VaryByHeaders