[英]Cached, shared server control in asp.net appears multiple times on page
我的asp.net网站正在使用服务器控件通过缓存部分页面来提高性能。
它在大多数情况下都能正常工作,但有时,即使在页面上仅引用了一次控件,服务器控件中的一个也会在页面上出现多次-有时出现两次,有时出现三次。
发生这种情况时,我们办公室中的多台计算机看起来都一样-因此,这不是浏览器问题。
如果我们为有问题的复制控件重新上传.ascx文件,它将对其进行修复。 我的猜测是,控件的服务器端缓存某种程度上出了问题,重新上载ascx文件会清除服务器缓存,以便下次请求页面时可以重新创建它。
我的问题是:
.ascx文件顶部的指令如下:
<%@ OutputCache Duration="86400" Shared="true" VaryByParam="none" %>
<%@ Control Language="VB" ClassName="Banner_LocalGuides" EnableViewState="false" %>
控件是在内容页面上注册的,如下所示:
<%@ Register TagPrefix="tymControls" TagName="LocalGuides" Src="~/Banner-LocalGuides.ascx" %>
然后,在内容页面上使用该标签,如下所示:
<tymControls:LocalGuides ID="LocalGuides" runat="server" />
我考虑的一件事是,与ascx文件的OutputCache Duration属性相比,这可能与IIS中应用程序池的回收周期的时间有关-但我可能完全错了。 应用程序池的回收时间目前为240分钟(14,400秒)。
有关我们网站设置的更多信息:
任何帮助,不胜感激。
我们发现答案在ascx控件显示的数据中。 某些数据包含HTML,这会破坏页面的格式。
我们运行了一些字符串函数以去除HTML,从而解决了该问题。
问题的间歇性是由于数据一直在变化,当我们重新上载ascx文件时,它会强制缓存的控件获取新数据-如果新数据不包含导致问题的HTML,则它似乎是固定的。
感谢大家的投入。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.