我有一个 DNN 任务,它只需运行一些 Javascript 来根据几个输入字段计算价格。该模块在我们的生产站点上运行良好,但是我们让一家公司为我们做了一个皮肤来改善站点的外观,并且该模块在这个新系统下失败了。 (深度神经网络 05.06.00 (459) 虽然之前是 5.5...我更新了,但徒劳地希望这是旧版本中的一个错误。)
令人难以置信的是,当我以管理员身份登录 DNN 并使用编辑模式时,该模块工作正常。在这种情况下,一小段 JavaScript 可以正常加载并填充字段并生成价格。
另一方面,我单击“查看”(或更重要的是,如果我根本没有登录)页面会加载缓存的副本。更奇怪的是,我发现\Portals\2\Cache\Pages 中的缓存文件已生成,然后仅使用缓存数据。
加载缓存副本时,不会出现 JavaScript(它通常是通过 Page.ClientScript.RegisterClientScriptBlock() 创建的。此外,将数据发布到服务器的按钮不会执行任何服务器操作辅助代码(用调试器确认),但只是重新加载缓存的副本。
如果我手动删除\Portals\2\Cache\Pages 中的文件,那么一切都会正常工作,但我必须在每次页面加载后执行此操作:如果不这样做,只会加载上次重复生成的页面。
重置应用程序(通过 UI 或编辑 web.config)不会改变这一点,并且从“主机设置”页面清除缓存实际上不会清除这些缓存的页面。
我猜测编辑模式会以某种方式绕过缓存,但我已经关闭了网站上的所有缓存(这对性能来说非常糟糕),并且缓存版本仍然 已加载。
有人见过这样的事情吗?清除缓存不应该清除文件(我正在使用文件提供程序进行缓存)吗?如果用户回发,甚至缓存的页面也不应该返回到服务器吗?
编辑:我应该指出,权限似乎不是缓存目录的问题...其他页面缓存的输出已从此文件夹中删除,只是此页面存在此问题。
编辑2:澄清一些我没有提供的设置和条件。首先,该模块在 DNN 5.6.0 下的生产中运行良好。在我们的测试环境中,咨询公司进行了更改,但它失败了(理论上更改只是皮肤和页面布局:模块源本身验证为未更改)。两者之间的所有缓存设置等均已验证相同,当我们找不到问题的其他原因时,我们仅将模块缓存设置为 0 和 -1(并完全禁用测试站点的缓存)。我在测试中看到缓存在许多其他页面上正常工作:此页面的某些内容导致了问题。
我们已经下注并正在根据顾问的工作创建可安装的皮肤,因为我怀疑他们以某种方式损坏了 DNN 安装(我认为是数据库方面)。
最佳答案
在 5.6.x 上,您需要确定一些事情。
- 如果模块必须回发,则模块设置中的缓存持续时间设置必须设置为 0
- 在页面设置中,确保您没有为输出缓存提供程序设置提供程序或缓存持续时间
关于caching - DotNetNuke 模块在 "Edit"模式下工作,但不适用于 "View": cache problem?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/4523278/