gpt4 book ai didi

ruby-on-rails-3 - Rails cache_digests 和条件

转载 作者:行者123 更新时间:2023-12-02 03:38:28 34 4
gpt4 key购买 nike

当我们使用缓存摘要在 Rails 中缓存部分内容时,如何处理部分内容中的条件逻辑?它是否会缓存完整的模板并稍后应用条件,以便可以将正确的 json/html 提供给正确的用户?

最佳答案

Does it cache the full template and later apply the conditionals so that the right json/html can be served to the right user?

这部分问题对我来说似乎有点不清楚,所以我将根据“条件”可能是什么提供不同的选项。

首先,缓存摘要不关心基于@variables 状态的内部条件(除非在其缓存键中提到了特定状态)。考虑以下示例:

# users.haml
.welcome_block
- if @user.admin?
%h4 Hello, admin!
- else
%h4 Hello, user!

如果您使用 cache ['users_haml'] 将缓存应用到整个页面,缓存将只生成一次(对于具有任何角色的第一个用户)。以后访问此页面的任何用户都会看到与显示给第一个用户的问候语相同的 h4 问候语。这里的原因是字符串 users_hamldigest,证明给 cache 方法,无论在任何情况下都是相同的。

另一方面,cache @user 会提供稍微不同的行为。每个打开 users.haml 页面的用户都会根据他/她的角色看到适当的问候语。出现此行为的原因是 digest 对于 User 类型的所有对象都不同,因此 cache_digests 为 N 个用户生成 N 个缓存页面。

想到的最后一种条件是基于条件部分渲染的条件,例如:

# users.haml
- cache [@user.month_of_birth]
- if @user.month_of_birth == 'October'
= render 'partial_one'
- else
= render 'partial_two'

所以,这个为不同出生月份的用户呈现正确的缓存页面。但是,如果我更改 partial_one 的内容会发生什么? cache_digests 是如何理解应该对十月出生的人使缓存失效的(根据条件语句)?

这里的答案是它根本不知道。它唯一知道的是 users.haml 依赖于 partial_onepartial_two,因此对这些内部部分中的任何一个的更改都会使 ALL users.haml 页面缓存而不考虑用户的出生月份。

关于ruby-on-rails-3 - Rails cache_digests 和条件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21718959/

34 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com