6

我安装了 DotNetNuke 4.9.2 版,我正在使用 Firebug 和 YSLOW 观察准备好的缓存状态......

所有的图片和javascript都缓存在客户端,除非我替换它们......所以如果我上传一个新的LOGO图片,它就不再缓存了。现有的被缓存。如果我替换现有的 .js 文件(我通过压缩器运行了一个),它不再被缓存。如果我用原始文件替换新文件,它们会再次被缓存。

我找不到有关此的任何文档...有什么想法吗?谢谢!

4

7 回答 7

1

我找到了这个参考:

解决缓存问题

在这里,我很乐意分享我用来解决问题的出色调试和解决问题的技巧。只有我不能,因为我永远无法弄清楚哪里出了问题。对我来说,使用简单的重载 [setCache(key,object)] 似乎无法正常工作。

我最终所做的是使用与 Url Dictionary 缓存相同的代码。这是一个不同的重载,因为它使用了回调和固定的过期时间。

这是代码:

DateTime absoluteExpiration = DateTime.Now.Add(settings.CacheTime);
DataCache.SetCache(UrlDictKey, urlDict, null, absoluteExpiration, Cache.NoSlidingExpiration, CacheItemPriority.AboveNormal, onRemove, settings.CachePersistRestart);

此代码使用不同的重载,并且由于某种原因,可以正常工作。测试证实了这一点:以前,当用请求敲击测试服务器时,最终它会因为数据库一次又一次地加载到同一个表的查询而阻塞。现在,将对 sp 进行一次调用,该项目将被缓存,并且请求可以通过而不会阻塞。

在以下位置找到此参考:http ://www.ifinity.com.au/Blog/Technical_Blog/EntryId/55/DotNetNuke-Caching-and-a-performance-problem/

希望我至少能够帮助您或为您指明正确的方向。

于 2009-03-04T16:07:25.387 回答
1

仅供参考,这可能有点偏离主题,但 DotNetNuke 将它的很多模块缓存到 /portals/ 目录中的平面文件中(这是默认缓存设置)。在主机菜单下,您可以清除此缓存和/或更改缓存设置。

DotNetNuke 5.x 已经完全重新架构,因此如果您正在寻找高性能,您可能需要检查一下。DotNetNuke.com 站点的性能在从 4.9.x 迁移到 5.0 时显着提高。

于 2009-03-09T05:25:41.833 回答
1

我不会想到 DNN 会提供资产/静态文件(例如图像)。我认为他们只会由 IIS 直接提供服务。除非网址是这样的:

blah.com/GetImage.aspx?filename=logo.jpg

如果您的 URL 在某处没有“aspx”,那么 IIS 就是问题所在。

于 2009-03-12T05:13:11.883 回答
1

客户端上的缓存依赖于 Web 服务器将发送给您的浏览器的一组特定 HTTP 标头,您的浏览器在后续请求相同对象(即徽标图像)时使用这些标头。

当您替换文件时,Web 服务器将更改它正在生成的响应(HTTP Last-Modified/ETag 标头) - 这将使您的浏览器缓存副本无效。

于 2009-03-16T13:45:32.817 回答
1

确保您的 IIS 实例设置为启用内容过期。我发现在我的几个托管站点上,这没有设置,缓存也没有按照应有的方式完成。我让他们启用它,现在我的图像和“静态”文件正在正确缓存。

好运J

于 2009-03-18T17:03:54.097 回答
0

我不了解 DotNetNuke,但您需要通过为相同的文件名提供不同的 URL 来破坏/终止缓存。看看大佬们是怎么做的:

堆栈溢出:/js/question.min.js? v=2527

斜线点:images.slashdot.org/idlecore-tided.css?T_2_5_0_244a

挖掘:/css/ 176 /global.css

bbc.co.uk:/home/release-29-7 /style/homepage.min.css _

于 2009-03-05T12:41:12.817 回答
0

您是否查看过我认为的主机设置下的缓存设置?

于 2009-03-07T07:00:36.940 回答