繁体   English   中英

asp.net中的缓存的共享服务器控件在页面上多次出现

[英]Cached, shared server control in asp.net appears multiple times on page

我的asp.net网站正在使用服务器控件通过缓存部分页面来提高性能。

它在大多数情况下都能正常工作,但有时,即使在页面上仅引用了一次控件,服务器控件中的一个也会在页面上出现多次-有时出现两次,有时出现三次。

发生这种情况时,我们办公室中的多台计算机看起来都一样-因此,这不是浏览器问题。

如果我们为有问题的复制控件重新上传.ascx文件,它将对其进行修复。 我的猜测是,控件的服务器端缓存某种程度上出了问题,重新上载ascx文件会清除服务器缓存,以便下次请求页面时可以重新创建它。

我的问题是:

  1. 其他人有没有经历过?
  2. 有办法解决吗?

.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秒)。

有关我们网站设置的更多信息:

  • 在经典管道模式下运行asp.net 4。
  • IIS 7
  • 在vb.net中编码
  • 使用母版页,但是.ascx是从内容页而不是母版页引用的

任何帮助,不胜感激。

我们发现答案在ascx控件显示的数据中。 某些数据包含HTML,这会破坏页面的格式。

我们运行了一些字符串函数以去除HTML,从而解决了该问题。

问题的间歇性是由于数据一直在变化,当我们重新上载ascx文件时,它会强制缓存的控件获取新数据-如果新数据不包含导致问题的HTML,则它似乎是固定的。

感谢大家的投入。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM