问题标签 [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.
asp.net - ASP.NET 和输出缓存 - 如何查看它是否正常工作?
问题:我有一个 ASP.NET 网站,但我不相信我的代码正确地得到了 OutputCached。我正在使用 IIS7 性能计数器向我显示命中或未命中一秒。
我有一个简单的 ASP.NET MVC 网站。我正在使用内置的 ASP.NET 输出缓存魔法。
这是一些示例代码:-
所以这意味着每个 url 查询都可以如下所示:-
- http://www.mydomain.com/Foo?name=hello+word&key=1234
- http://www.mydomain.com/Foo?name=hello+word&alpha=1&key=1234
- http://www.mydomain.com/Foo?name=hello+word&alpha=1&beta=2&key=1234
现在,请注意我是如何让 OutputCache 引用配置文件的?这里是...
没什么太难的...
所以这是踢球者!当我通过使用 IIS7 性能计数器确认发生这种情况时,它表示输出缓存未命中/秒是我每秒发出的请求的 100%。输出缓存命中率为 0/秒。
我正在使用第 3 方网络负载压力测试程序来向我的网站发送查询。现在,源数据是什么?名单。程序不断循环遍历所有名称,然后返回开始,重复冲洗。因此,必须至少调用一次相同的查询字符串。IIS 日志文件证实了这一点。
我没有为 alpha 或 beta 传递任何数据。
这是我正在点击的查询字符串....
...我一直用数据源文件中的名称替换“hello+world”,IIS 日志证实了这一点。
所以..我在看错误的性能计数器吗?是否有任何其他技巧可以查看它是否正在输出缓存?代码非常快,因此很难判断这是否是缓存结果。
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
asp.net - 如何在 asp.net Web 应用程序中预填充输出缓存?
我正在使用 outputcache 页面指令来缓存基于 VaryByParam 的值。有没有一种方法可以在 Web 应用程序启动时为一组常用参数预填充缓存,而不必等待用户点击页面?还是我只需要编写一个脚本来访问我想要缓存的所有页面?理想情况下,我可以在 global.asax application_start 的某个地方进行服务器端操作?
c# - 输出带有用户特定信息的缓存页面
我们有几个网站,这些网站主要使用 sql 数据库后端进行内容管理。这些网站大部分时间都在提供静态信息,除非用户通过投票或更新来更改内容(类似于 SO)。这些网站都有母版页,其中用户特定信息通常显示在每个页面的顶部(也类似于 SO)。
我们希望实现输出缓存,以防止 db 命中以从 db 中获取每个请求的内容,而 90% 的时间它与之前的请求(除了用户信息之外)没有任何变化。做这个的最好方式是什么?我显然知道通过控件进行部分缓存,但这意味着使每个页面内容成为控件,我们不想这样做。
有什么建议么?我认为 SO 有一个缓存策略来实现这一点。
asp.net - 如何以编程方式为 ascx 删除 OutputCache?
我有一个 page1.aspx:
和 uc1.ascx 使用OutputCache
:
如何单击另一个 page2.aspx 中的按钮以删除OutputCache
uc1.ascx 或 page1.aspx?
当 OutputCache 在 page1.aspx 中时,我可以使用以下代码删除 OutputCache:
但是当 OutputCache 在 uc1.ascx 中时它不起作用。
asp.net - Outputcache - 如何确定持续时间的最佳值?
我在某处读到,对于一个高流量站点(我想这也是一个模糊的术语),30 - 60 秒是一个不错的值。显然我可以进行负载测试并改变值,但我找不到任何关于此的文档。大多数样本都有一分钟,几分钟。没有推荐的范围。msdn 上或任何地方都在谈论这个问题吗?
asp.net - ASP.NET MVC:OutputCache 的问题
对于我当前的项目,有必要生成动态 CSS ......
所以,我有一个部分视图,它用作 CSS 交付器......控制器代码如下所示:
输出缓存配置文件如下所示:
问题是:当我使用 OutputCache 行 ([OutputCache(CacheProfile = "DetailsCSS")]) 时,响应的内容类型是“text/html”,而不是“text/css”...当我删除它时,它按预期工作......
所以,对我来说,OutputCache 似乎没有在这里保存我的“ContentType”设置......有什么办法解决这个问题吗?
谢谢
asp.net - InvalidCastException:System.Web.UI.PartialCachingControl -> 输出缓存时的 MyCustomControl
问题:我无法将 OutputCaching 与源自 MyCustomControl 的控件一起使用。控件是使用 Page.LoadControl 方法使用数据库中的定义动态加载的。
当我添加到 ascx <%@ OutputCache VaryByParam="*" Duration="3600"%> 时,会引发“InvalidCastException: System.Web.UI.PartialCachingControl -> MyCustomControl”异常。
我无法修改包含动态加载控制逻辑的程序集。有没有办法在派生控件中修复它?
第二个问题是关于 iis7 和本机输出缓存——它解决了这个问题吗?(我试图设置几个性能计数器,我发现缓存没有被命中......)
asp.net-mvc - ASP.NET MVC OutputCacheAttribute:如果设置了参数,是否不缓存?
我有以下动作:
我想要[OutputCache]
那个动作,但我也想要那个:
- 如果 ; 它不使用缓存
id == null
;或者 - 如果
id == null
但持续时间不同,它会使用缓存。
我想我可以通过以下方式实现:
但是,此解决方案意味着 2 个操作,而id
实际是可选的,因此这可能会产生一些代码重复。当然我可以做类似的事情
但这看起来很难看。
你将如何实现这一点?
asp.net - ASP.NET 输出缓存 - 动态更新依赖项
我有一个需要输出缓存的 ASP.NET 应用程序。当从 Web 服务返回的数据发生更改时,我需要使缓存项无效,因此简单的持续时间是不够的。
我一直在阅读有关缓存依赖项的内容,并认为我的想法是正确的。看起来我需要为我的 Web 服务创建一个缓存依赖项。
要将页面输出与此依赖项相关联,我认为我应该使用以下方法:
Response.AddCacheItemDependency(cacheKey);
我正在努力解决的问题是我应该将什么添加到缓存中?
我的页面依赖于 Web 服务返回的单个值。我目前的想法是我应该通过子类化 CacheDependency 创建一个自定义缓存依赖项,并将当前值存储在缓存中。然后我可以使用 Response.AddCacheItemDependency 来形成依赖关系。
然后我可以定期检查值和 NotifyDependencyChange 以使我缓存的 HTTP 响应无效。
问题是,我需要确保立即刷新缓存,因此定期检查还不够好。如何确保在从缓存中获取 HTTP 响应之前重新评估缓存中代表 Web 服务返回值的依赖对象?
问候,科林 E。