在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
作者:admin 日期:2006-12-05当输出缓存中有一个它希望用作客户端请求响应的现有项时,它必须首先检查原服务器(或含有新响应的中间缓存,如代理服务器)以确定该缓存项是否仍可用。此过程称为验证缓存项。为避免因在缓存项有效的情况下重新生成和重新传输页,或在缓存项无效的情况下发生额外的往返进程而导致资源浪费,ASP.NET 为您提供了一种以编程方式验证缓存页的机制。 注意 有关缓存有效性及其要求的更多信息,请参见位于 www.w3.orgor 的 HTTP 1.1 规范。 若要确定缓存页是否有效,必须使用与 HttpCacheValidateHandler 委托相同的签名定义一个事件处理程序。该处理程序应执行检查以确定存储在缓存中的页是否仍有效,然后将 HttpValidationStatus 枚举值之一分配给检查的可能返回结果。该枚举具有以下三个值:
在一个页生存期事件中,HttpCachePolicy.AddValidationCallback 方法将事件处理程序作为参数获取。从 Web 服务器缓存中输出响应服务之前,将查询已注册的所有处理程序以确保资源的有效性。如果任何处理程序设置了表示资源无效的标志,则该项将标记为无效并将从缓存中移除。然后,将请求作为缓存未命中来处理。 检查缓存页的有效性
注意 该示例旨在简单地展示如何使缓存中的页无效。您创建的大多数方案都应该根据服务器上的某个状态(与更改的页关联)对页进行验证。 [C#] <%@ OutputCache Duration=100 varybyparam="none" %> <Script Language="C#" runat="server"> public void Page_Load(){ if(!IsPostback) { myText.Text = "Enter validation request." ; } Response.Cache.AddValidationCallback(new HttpCacheValidateHandler(Validate), null); stamp.InnerHtml = DateTime.Now.ToString("r"); } public void Button1_Click(){ Validate(); } public void Validate(HttpContext context, Object data, ref HttpValidationStatus status) { if (myText.Text == "false") { status = HttpValidationStatus.Invalid; } else if (myText.Text == "ignore") { status = HttpValidationStatus.IgnoreThisRequest; } else { status = HttpValidationStatus.Valid; } } </Script> <form runat="server" > <asp:textbox /> <br> <asp:button /> </form> <br> <b>In the text box, enter false to invalidate the cached page, ignore to ignore the current request, or any other string to leave the output cached page valid. </b> <br> <br> <Font size=6><B id=stamp runat=server /></Font> |
请发表评论