我遇到了一些奇怪的缓存问题,并将一个非常简单的.NET页面与一个输出缓存指令放在一起。但是,页面没有缓存(每次刷新时内容更新)。
我在我的本地机器(Windows 7)上安装了一个简单的、最小的CMS站点(Ektronv.9.0 SP2)。在这个网站项目中,我创建了一个简单的页面来测试输出缓存。以下是页面代码:
<%@ Page Language="C#" AutoEventWireup="true" CodeFile="CacheTest.aspx.cs" Inherits="CacheTest" %>
<%@ OutputCache Duration="3600" Location="Server" VaryByParam="None" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>Cache Test</title>
</head>
<body>
<form id="form1" runat="server">
<div>
<p><%= DateTime.Now.ToString() %></p>
</div>
</form>
</body>
</html>此页面根本不缓存。
在我们的生产站点上,OutputCache通常也不工作,除了在一个测试页面上配置与上面的完全相同。我不明白为什么这个页面是不同的,并且是唯一在dev服务器上工作的页面,但是当复制到我的本地主机上运行的站点时,它就不再工作了。
我确实注意到,在我们的生产站点上,使用母版页似乎使输出缓存无法工作,尽管在这个本地主机站点中,我没有使用母版页,而且它仍然不工作。
我应该从哪里开始寻找这个问题的疑难解答?我查看了IIS设置,找不到任何明显的设置来打开/关闭页面级缓存。我也搜索了大量的网络,似乎找不到其他与这个问题有关的人。
发布于 2015-04-21 12:08:05
Microsoft已经禁用了包含cookie的页面的输出缓存,以防止一个用户获得为另一个用户提供的缓存版本的页面。
有一个从输出中删除cookie的解决方案。请参阅https://support.episerver.com/hc/en-us/articles/115004119986-Output-Caching-Broken
作为另一种选择,您还可以通过缓存用户控件来使用部分页面缓存。
发布于 2015-04-21 02:24:55
在定义中添加CacheProfile属性,
<%@ OutputCache CacheProfile="CacheOneHour" Duration="3600" Location="Server" VaryByParam="none" %>在Web.config文件中声明缓存配置文件。(在system.web中,放置声明):
<system.web>
<caching>
<outputCacheSettings>
<outputCacheProfiles>
<add name="CacheOneHour"
duration="3600"
location="Server"
varyByParam="none" />
</outputCacheProfiles>
</outputCacheSettings>
</caching>
</system.web>https://stackoverflow.com/questions/29751570
复制相似问题