问题标签 [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.

0 投票
1 回答
291 浏览

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

0 投票
2 回答
192 浏览

caching - 一夜之间预热缓存摘要

我们有一个相当大的 Rails 3.2 网站,有数千个 URL。我们为俄罗斯娃娃缓存实现了 Cache_Digests gem。它运作良好。我们希望通过在一夜之间预热缓存来进一步优化,以便用户在白天获得更好的体验。我已经看到了这个问题的答案:Rails:计划任务来预热缓存?

是否可以对其进行修改以预热大量 URL?

0 投票
1 回答
69 浏览

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!这里发生了什么?

谢谢!