我安装了 DotNetNuke 4.9.2 版,我正在使用 Firebug 和 YSLOW 观察准备好的缓存状态......
所有的图片和javascript都缓存在客户端,除非我替换它们......所以如果我上传一个新的LOGO图片,它就不再缓存了。现有的被缓存。如果我替换现有的 .js 文件(我通过压缩器运行了一个),它不再被缓存。如果我用原始文件替换新文件,它们会再次被缓存。
我找不到有关此的任何文档...有什么想法吗?谢谢!
我安装了 DotNetNuke 4.9.2 版,我正在使用 Firebug 和 YSLOW 观察准备好的缓存状态......
所有的图片和javascript都缓存在客户端,除非我替换它们......所以如果我上传一个新的LOGO图片,它就不再缓存了。现有的被缓存。如果我替换现有的 .js 文件(我通过压缩器运行了一个),它不再被缓存。如果我用原始文件替换新文件,它们会再次被缓存。
我找不到有关此的任何文档...有什么想法吗?谢谢!
我找到了这个参考:
解决缓存问题
在这里,我很乐意分享我用来解决问题的出色调试和解决问题的技巧。只有我不能,因为我永远无法弄清楚哪里出了问题。对我来说,使用简单的重载 [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 进行一次调用,该项目将被缓存,并且请求可以通过而不会阻塞。
希望我至少能够帮助您或为您指明正确的方向。
仅供参考,这可能有点偏离主题,但 DotNetNuke 将它的很多模块缓存到 /portals/ 目录中的平面文件中(这是默认缓存设置)。在主机菜单下,您可以清除此缓存和/或更改缓存设置。
DotNetNuke 5.x 已经完全重新架构,因此如果您正在寻找高性能,您可能需要检查一下。DotNetNuke.com 站点的性能在从 4.9.x 迁移到 5.0 时显着提高。
我不会想到 DNN 会提供资产/静态文件(例如图像)。我认为他们只会由 IIS 直接提供服务。除非网址是这样的:
blah.com/GetImage.aspx?filename=logo.jpg
如果您的 URL 在某处没有“aspx”,那么 IIS 就是问题所在。
客户端上的缓存依赖于 Web 服务器将发送给您的浏览器的一组特定 HTTP 标头,您的浏览器在后续请求相同对象(即徽标图像)时使用这些标头。
当您替换文件时,Web 服务器将更改它正在生成的响应(HTTP Last-Modified/ETag 标头) - 这将使您的浏览器缓存副本无效。
确保您的 IIS 实例设置为启用内容过期。我发现在我的几个托管站点上,这没有设置,缓存也没有按照应有的方式完成。我让他们启用它,现在我的图像和“静态”文件正在正确缓存。
好运J
我不了解 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 _
您是否查看过我认为的主机设置下的缓存设置?