![]() |
1
22
正如Matchu发布的那样,您可以从 this post (他发布了同样的链接,但也是通过我的谷歌搜索找到的)。这增加了对javascript的依赖,这可能是您想要的,也可能不是您想要的。 或者,你可以看看 Fragment Caching . 这允许您缓存某些 部分 但仍然生成动态部分(例如带有真实性标记的表单)。使用这种技术,您可以缓存页面的其余部分,但为每个请求生成一个新表单。 最后一个解决方案(但最不利的)是禁用该特定操作的真实性令牌。您可以通过将以下内容添加到生成该表单的控制器的开头来完成此操作:
您还可以通过在开始处添加以下内容来关闭对整个控制器的“保护”功能:
|
![]() |
2
1
这似乎不是一个很好解决的问题。 Point two on this blog post 描述如何使用jquery完成任务,但这引入了一个javascript依赖项。我想,要权衡一下你的选择。 |
![]() |
3
1
您可以在缓存标记中呈现自定义标记,并将其替换为在每个请求上呈现的表单。
在您的视图中,您只需呈现一个空的不可缓存的_Form标记。
是的,这可以被视为一种黑客行为,但是它不会放松伪造保护,不需要JS,并且只会稍微降低缓存带来的性能增益。我认为有人实现了与机架中间件类似的模式。 |
![]() |
4
1
我遵循了Niklas Hofer的一般解决方案,但我发现他的实现与Rails缓存助手的确切语义不匹配。也就是说,它试图从帮助程序返回缓存的HTML,而不是使用
Rails助手的用法如下:
然而他的解决方案需要这种语法:
为了保持一致性,我希望这些工作方式相同。因此,我使用了以下语法:
这是我的实现。当缓存被禁用时,它也将跳过缓存,就像Rails助手那样。
|
![]() |
5
0
作为一个更通用的解决方案,您还可以用当前的真实性标记替换所有缓存的真实性标记:
和使用
|
![]() |
Chris · jQuery多种形式。需要在“提交”时捕获$(this)表单 11 月前 |
![]() |
girdeux · Django:在Form的init方法中使用小部件? 11 月前 |
|
Charlie · 为什么我的复选框和单选按钮的间距很奇怪? 11 月前 |