问题标签 [cache-digests]
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.
ruby-on-rails - 为什么我的自引用模板会在控制台和 rake 中破坏缓存摘要计算,但在服务器中却没有?
我有两个相互引用的部分。当我在控制台中计算嵌套依赖项时(使用一些调试代码输出正在加载的模板):
或通过像这样的 rake 任务:
我得到一个初始依赖项的简短列表,然后在一个无限循环中,直到 ruby 堆栈已满:
(模板名称已更改)
但是,当我运行应用服务器并请求模板时,一切运行良好,没有无限循环。
以下是我在上述所有情况下的设置:
该代码表明它确实具有递归引用保护:https ://github.com/rails/rails/blob/v4.1.8/actionview/lib/action_view/digestor.rb#L35
为什么这种保护在服务器环境中有效,但在控制台或 rake 任务中无效?
(也是一个 github 问题https://github.com/rails/rails/issues/18667)
caching - 一夜之间预热缓存摘要
我们有一个相当大的 Rails 3.2 网站,有数千个 URL。我们为俄罗斯娃娃缓存实现了 Cache_Digests gem。它运作良好。我们希望通过在一夜之间预热缓存来进一步优化,以便用户在白天获得更好的体验。我已经看到了这个问题的答案:Rails:计划任务来预热缓存?
是否可以对其进行修改以预热大量 URL?
ruby-on-rails - 在开发过程中嵌套缓存的 Rails 片段会使网站速度降低 300%:为什么?
我正在开发一个使用俄罗斯娃娃缓存的 Rails (4.1.14) 站点,如下所示:
home.html.erb:
产品/_group.html.erb:
产品/_big.html.erb:
等等。
由于某种原因,此页面在开发中需要很长时间才能加载(12 秒!)。
当我将所有嵌套的部分内联到最外层时,页面加载下降了 75%,只有 3 秒。
这看起来很疯狂,因为它与渲染到屏幕上的内容完全相同,并且最外层的缓存应该使它与我如何设计里面的内容无关。
那么到底是什么导致了这种放缓呢?
我唯一能想到的是 Rails 计算内层的缓存摘要。我想在生产中,Rails 知道代码不会更改(?),因此它不会递归获取摘要?
有任何想法吗?
编辑:
我什至尝试将最外面的 ( product/group
) 片段设置为简单<% cache do %>
,以便所有组都呈现完全相同。该网站仍然需要大约 6 秒才能加载,并且日志显示了一系列活动:
这些都是缓存的,所以它应该只是直接从内存中放入 HTML 片段……事实上,相同的 HTML 片段一次又一次……但每一个都会导致所有这些日志记录活动。每一个都需要500ms!这里发生了什么?
谢谢!