问题标签 [outputcache]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
4409 浏览

asp.net - ASP.NET 和输出缓存 - 如何查看它是否正常工作?

问题:我有一个 ASP.NET 网站,但我不相信我的代码正确地得到了 OutputCached。我正在使用 IIS7 性能计数器向我显示命中或未命中一秒。


我有一个简单的 ASP.NET MVC 网站。我正在使用内置的 ASP.NET 输出缓存魔法。

这是一些示例代码:-

所以这意味着每个 url 查询都可以如下所示:-

现在,请注意我是如何让 OutputCache 引用配置文件的?这里是...

没什么太难的...

所以这是踢球者!当我通过使用 IIS7 性能计数器确认发生这种情况时,它表示输出缓存未命中/秒是我每秒发出的请求的 100%。输出缓存命中率为 0/秒。

我正在使用第 3 方网络负载压力测试程序来向我的网站发送查询。现在,源数据是什么?名单。程序不断循环遍历所有名称,然后返回开始,重复冲洗。因此,必须至少调用一次相同的查询字符串。IIS 日志文件证实了这一点。

我没有为 alpha 或 beta 传递任何数据。

这是我正在点击的查询字符串....

...我一直用数据源文件中的名称替换“hello+world”,IIS 日志证实了这一点。

所以..我在看错误的性能计数器吗?是否有任何其他技巧可以查看它是否正在输出缓存?代码非常快,因此很难判断这是否是缓存结果。

0 投票
0 回答
1238 浏览

asp.net - ASP.NET 在缓存页面上返回“NullReferenceException”

我在 content.aspx 页面上使用了缓存系统,如下所示:

当请求新页面时,我得到

NullReferenceException:对象引用未设置为对象的实例

解释页面的相同问题

上面的页面解释了 ASP.NET 1.1 中的一个问题,但是我的页面在 Visual Studio 2008 和 ASP.NET 3.5 下编译。

注意:我在我的网站上使用 URL Rewrite API 来:mydomain.com/news/123 -> mydomain.com/content.aspx?id=123

请分享你对这个问题的经验

编辑:页面错误是

“/”应用程序中的服务器错误。你调用的对象是空的。说明:执行当前 Web 请求期间发生未处理的异常。请查看堆栈跟踪以获取有关错误及其源自代码的位置的更多信息。

异常详细信息:System.NullReferenceException:对象引用未设置为对象的实例。

源错误:

在执行当前 Web 请求期间生成了未处理的异常。可以使用下面的异常堆栈跟踪来识别有关异常起源和位置的信息。

堆栈跟踪:

[NullReferenceException: 对象引用未设置为对象的实例。] AyandeNews.Main.Page_Load(Object sender, EventArgs e) +629 System.Web.Util.CalliHelper.EventArgFunctionCaller(IntPtr fp, Object o, Object t, EventArgs e ) +14
System.Web.Util.CalliEventHandlerDelegateProxy.Callback(Object sender, EventArgs e) +35 System.Web.UI.Control.OnLoad(EventArgs e) +99
AyandeNews.PSBaseMasterPage.OnLoad(EventArgs e) +37
System.Web .UI.Control.LoadRecursive() +50
System.Web.UI.Control.LoadRecursive() +141
System.Web.UI.Page.ProcessRequestMain(Boolean includeStagesBeforeAsyncPoint, Boolean includeStagesAfterAsyncPoint) +627

版本信息:Microsoft .NET Framework 版本:2.0.50727.3082;ASP.NET 版本:2.0.50727.3082

0 投票
3 回答
1206 浏览

asp.net - 如何在 asp.net Web 应用程序中预填充输出缓存?

我正在使用 outputcache 页面指令来缓存基于 VaryByParam 的值。有没有一种方法可以在 Web 应用程序启动时为一组常用参数预填充缓存,而不必等待用户点击页面?还是我只需要编写一个脚本来访问我想要缓存的所有页面?理想情况下,我可以在 global.asax application_start 的某个地方进行服务器端操作?

0 投票
1 回答
292 浏览

c# - 输出带有用户特定信息的缓存页面

我们有几个网站,这些网站主要使用 sql 数据库后端进行内容管理。这些网站大部分时间都在提供静态信息,除非用户通过投票或更新来更改内容(类似于 SO)。这些网站都有母版页,其中用户特定信息通常显示在每个页面的顶部(也类似于 SO)。

我们希望实现输出缓存,以防止 db 命中以从 db 中获取每个请求的内容,而 90% 的时间它与之前的请求(除了用户信息之外)没有任何变化。做这个的最好方式是什么?我显然知道通过控件进行部分缓存,但这意味着使每个页面内容成为控件,我们不想这样做。

有什么建议么?我认为 SO 有一个缓存策略来实现这一点。

0 投票
1 回答
2872 浏览

asp.net - 如何以编程方式为 ascx 删除 OutputCache?

我有一个 page1.aspx:

和 uc1.ascx 使用OutputCache

如何单击另一个 page2.aspx 中的按钮以删除OutputCacheuc1.ascx 或 page1.aspx?

当 OutputCache 在 page1.aspx 中时,我可以使用以下代码删除 OutputCache:

但是当 OutputCache 在 uc1.ascx 中时它不起作用。

0 投票
2 回答
696 浏览

asp.net - Outputcache - 如何确定持续时间的最佳值?

我在某处读到,对于一个高流量站点(我想这也是一个模糊的术语),30 - 60 秒是一个不错的值。显然我可以进行负载测试并改变值,但我找不到任何关于此的文档。大多数样本都有一分钟,几分钟。没有推荐的范围。msdn 上或任何地方都在谈论这个问题吗?

0 投票
3 回答
3688 浏览

asp.net - ASP.NET MVC:OutputCache 的问题

对于我当前的项目,有必要生成动态 CSS ......

所以,我有一个部分视图,它用作 CSS 交付器......控制器代码如下所示:

输出缓存配置文件如下所示:

问题是:当我使用 OutputCache 行 ([OutputCache(CacheProfile = "DetailsCSS")]) 时,响应的内容类型是“text/html”,而不是“text/css”...当我删除它时,它按预期工作......

所以,对我来说,OutputCache 似乎没有在这里保存我的“ContentType”设置......有什么办法解决这个问题吗?

谢谢

0 投票
1 回答
641 浏览

asp.net - InvalidCastException:System.Web.UI.PartialCachingControl -> 输出缓存时的 MyCustomControl

问题:我无法将 OutputCaching 与源自 MyCustomControl 的控件一起使用。控件是使用 Page.LoadControl 方法使用数据库中的定义动态加载的。

当我添加到 ascx <%@ OutputCache VaryByParam="*" Duration="3600"%> 时,会引发“InvalidCastException: System.Web.UI.PartialCachingControl -> MyCustomControl”异常。

我无法修改包含动态加载控制逻辑的程序集。有没有办法在派生控件中修复它?

第二个问题是关于 iis7 和本机输出缓存——它解决了这个问题吗?(我试图设置几个性能计数器,我发现缓存没有被命中......)

0 投票
1 回答
3171 浏览

asp.net-mvc - ASP.NET MVC OutputCacheAttribute:如果设置了参数,是否不缓存?

我有以下动作:

我想要[OutputCache]那个动作,但我也想要那个:

  • 如果 ; 它不使用缓存id == null;或者
  • 如果id == null但持续时间不同,它会使用缓存。

我想我可以通过以下方式实现:

但是,此解决方案意味着 2 个操作,而id实际是可选的,因此这可能会产生一些代码重复。当然我可以做类似的事情

但这看起来很难看。

你将如何实现这一点?

0 投票
2 回答
1489 浏览

asp.net - ASP.NET 输出缓存 - 动态更新依赖项

我有一个需要输出缓存的 ASP.NET 应用程序。当从 Web 服务返回的数据发生更改时,我需要使缓存项无效,因此简单的持续时间是不够的。

我一直在阅读有关缓存依赖项的内容,并认为我的想法是正确的。看起来我需要为我的 Web 服务创建一个缓存依赖项。

要将页面输出与此依赖项相关联,我认为我应该使用以下方法:

Response.AddCacheItemDependency(cacheKey);

我正在努力解决的问题是我应该将什么添加到缓存中?

我的页面依赖于 Web 服务返回的单个值。我目前的想法是我应该通过子类化 CacheDependency 创建一个自定义缓存依赖项,并将当前值存储在缓存中。然后我可以使用 Response.AddCacheItemDependency 来形成依赖关系。

然后我可以定期检查值和 NotifyDependencyChange 以使我缓存的 HTTP 响应无效。

问题是,我需要确保立即刷新缓存,因此定期检查还不够好。如何确保在从缓存中获取 HTTP 响应之前重新评估缓存中代表 Web 服务返回值的依赖对象?

问候,科林 E。