【问题标题】:What is the best way to cache static html that contains dynamic content?缓存包含动态内容的静态 html 的最佳方法是什么?
【发布时间】:2013-03-03 11:48:54
【问题描述】:

我在 Rails 中使用 haml 和俄罗斯娃娃缓存。我的目标是缓存尽可能多的静态 html,并且只呈现动态内容。但是,我经常有一大段未缓存的html,因为中间有一小部分动态代码。

假设我有这个包含 2 个部分的视图:

show.html.haml

= render 'message'

_container.html.haml

.nested
  .divs
    = render 'dynamic'

_dynamic.html.haml

= complex_stuff
.something
  = more_complex_stuff

我无法将 _container 部分包装在缓存块中,因为它包含动态内容。我知道我可以根据动态部分中的因变量对缓存块进行键控,但假设动态部分的复杂性太高而无法缓存。

有什么好的方法可以解决这个问题?

【问题讨论】:

    标签: ruby-on-rails caching russian-doll-caching


    【解决方案1】:

    我写了一个gem来解决这个问题:

    https://github.com/neighborland/cache_rocket

    【讨论】:

    • 你应该运行一些基准来检查这是否真的给你带来了任何好处;我怀疑它是否会有所帮助。缓存纯静态内容几乎没有什么好处(可能会失去一些东西),我怀疑对 sub 的额外调用会损害性能。
    • 好点。在早期测试中,我的渲染速度提高了 15-20%。这当然取决于您能够缓存多少 html。
    • 其实缓存静态html内容有很大的收获,这就是我这样做的原因。
    • 如果你有一组更复杂的嵌套部分,我可以看到你如何从缓存中受益,因为你会用缓存查找替换对render 的多次调用。我想这就是你真正的系统是什么样的?问题中的示例可能太简单而无法受益,因为缓存的内容(_container.html.haml)根本不使用render,它只是静态内容。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-05-09
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多