2

在尝试使用 Response.Cache.SetCacheability() 缓存页面时,我调试了程序 (F5)。但是我无法让它工作。每次单击 button1 后,Lable1 文本都会立即更新。

代码隐藏文件:

Response.Cache.SetCacheability(HttpCacheability.ServerAndNoCache);
Response.Cache.SetExpires(DateTime.Now.AddSeconds(1000));
Response.Cache.SetValidUntilExpires(true);
label1.Text = " Using HTTP CachePolicy class" + DateTime.Now.ToString();

这是我的 .ASPX 页面:

<%@ Page Title="" Language="C#" MasterPageFile="~/Site.master" AutoEventWireup="true" CodeFile="Default2.aspx.cs" Inherits="Default2" %>
<asp:Content ID="Content1" ContentPlaceHolderID="HeadContent" Runat="Server">
</asp:Content>
<asp:Content ID="Content2" ContentPlaceHolderID="MainContent" Runat="Server">
<asp:Label runat="server" Text="Label" ID="label1"></asp:Label>
    <asp:Button ID="Button1" runat="server" Text="Button" />
</asp:Content>

请帮忙。我什至无法得到这个非常基本的例子!

4

2 回答 2

2

单击该按钮将导致 POST,即使页面已缓存,该 POST 也将始终发送到服务器。

于 2013-06-04T08:45:34.033 回答
1

我们还需要以编程方式添加这一行:

Response.Cache.VaryByParams.IgnoreParams = true; // in case we are not using any VaryByParams parameter.

在这里,我没有使用任何参数来改变缓存。因此,除了我的问题之外,将上述代码行放入之后,它就开始工作了。

我还观察到,在声明性标记中,如果我们省略VaryByParams,则会引发错误。这永远不会奏效。

<%@ OutputCache Duration="60" %>

但这会起作用:

<%@ OutputCache Duration="60" VaryByParam="None" %>
于 2013-08-01T01:26:04.567 回答