0
网页上多次

我的asp.net网站使用服务器控制通过缓存的页面的部分,以提高性能。缓存,在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" /> 

有一件事我认为是,它可能是与应用程序池的回收周期在IIS与ASCX文件的OutputCache Duration属性比较的时间 - 但我可能是完全错误的。应用程序池回收时间目前为240分钟(14,400秒)。

在我们网站上设置更多信息:

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

任何帮助非常赞赏引用。

+0

请问为什么要缓存控件?数据是静态的吗? –

+0

嗨,詹姆斯,我们在网站上有几箱数据出现在各种页面上。其中一些是从数据库动态生成的,所以我们将这些缓存起来以防止太多的命中到数据库。有一些只包含静态数据。目前,我们正在缓存动态和静态 - 我认为不要打扰静态缓存。动态的确实需要缓存,因为用于生成它的代码/数据库查询非常密集。 –

+0

你是否考虑过缓存查询的结果而不是控件?只是一个想法... –

回答

0

我们发现,答案是,该ascx控件中显示的数据。其中一些数据包含HTML,它正在破坏页面的格式。

我们进行了一些字符串函数来剥离出HTML和解决了这一问题。

问题的间歇性是由于数据始终在变化,当我们重新上传了ascx文件时,它迫使缓存的控件获取新数据 - 如果新数据不包含HTML造成问题,然后它似乎修复。

感谢您输入的每个人。