2009-01-19 121 views
5

我的理解是页面级缓存没有考虑到,对于经过身份验证的站点,不同的用户可能会请求完全相同的页面(URL),而呈现的页面本身是不同(因为它包含用户特定的东西)。ASP.NET页面级缓存

除非您激活无cookie身份验证(然后sessionID成为URL的一部分),否则所有用户都将看到相同的缓存页面(不管他们是谁)。

这是正确的吗?

回答

4

是的,你在这一个100%正确。

通常我会移动到用户控件,以便能够缓存不会从用户更改为用户的项目的用户控件。

如果必须缓存用户特定数据,则可以使用Session或其他缓存存储。

3

根据您在页面上有多少动态内容,您可以使用替换控件在缓存页面上呈现动态内容。

此控件绑定到一个静态方法(请记住,页面生命周期并未运行,因为这是页面的缓存版本,并且Page_Load等中创建的对象都不会提供)返回动态内容并且可以是定位在页面上你想要的任何位置。

<asp:Substitution ID="mySubstitution" runat="server" MethodName="GetLoggeninUserName" /> 
0

是的,你是正确的,如果你使用ASP.NET 2.0或更高版本,Andy(和Zhaph)指出的Substitution控件是最好的答案。为非特定于用户的内容创建单独的用户控件是一种不太理想的方法,只有在您使用ASP.NET v1.x时才能使用(所以您应该将Andy的答案标记为答案,我认为)。