首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何设置Drupal/Varnish缓存,以便内容编辑器在登录后不会看到浏览器缓存的页面?

如何设置Drupal/Varnish缓存,以便内容编辑器在登录后不会看到浏览器缓存的页面?
EN

Drupal用户
提问于 2017-09-18 18:53:00
回答 2查看 253关注 0票数 1

我们的缓存解决方案出现了一些问题,我希望能有一些输入。

我们使用了一种解决方案的HAProxy ->清漆-> Apache。HAProxy终止SSL并将其发送到Varnish,然后在需要时从Apache发出请求。

我们正在使用Drupal 7,清除,和Cache Expiration。我们有Cache Expiration设置为使用外部过期,并包括基座。我们的网站将“最小缓存生存期”设置为“无”,“缓存页的终止”设置为"6h“。

Varnish缓存始终具有正确版本的缓存页,并且这些页的过期是正确的。

如果匿名用户访问一个页面,比如节点/123,然后登录,然后导航回浏览器仍然服务于浏览器缓存版本的页面。这是Drupal的预期行为,因为我希望该页面为匿名用户保持缓存。

我们的内容编辑器需要重新加载页面(F5),并认为存在“错误”,因为他们需要执行此操作,以查看其页面的预期的、经过身份验证的版本。

允许对生产实例进行编辑的其他管理员如何处理这个问题?

我一直在玩弄缩短清漆的缓存寿命的想法,但这感觉就像一个创可贴(30岁的缓存和6小时的缓存)。我还玩过移除从Varnish中出来的缓存头的想法,但是允许Varnish在其生存期内保存缓存。

如果可能的话,我希望能够缓存响应来保持服务器的负载。

提前感谢!

EN

回答 2

Drupal用户

回答已采纳

发布于 2017-09-21 21:43:16

我最终解决了这个问题,确保我们的代理为可缓存的页面发送了下面的标题。

Cache-Control: public, max-age=0

我所经历的行为是由于设置了page_cache_maximum_age,而实际上我不希望它被发送到客户端,只希望发送给我的缓存服务器。

sub vcl_backend_response() { if (not static content && !beresp.uncacheable) { unset beresp.http.Cache-Control; set beresp.http.Cache-Control = "public, max-age=0"; } }

票数 0
EN

Drupal用户

发布于 2017-09-18 21:25:04

见这个问题的答案:https://drupal.stackexchange.com/a/117984/3279

在这里可以看到D6清漆模块的示例用法:https://www.drupal.org/node/738420

因此,您可以在自定义的php模块中为hook_form_alter执行一个D7,该模块向节点添加一个附加的提交处理程序,该处理程序基本上调用D7等效代码来清除所讨论的1节点路径/别名的清漆缓存。

票数 0
EN
页面原文内容由Drupal提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://drupal.stackexchange.com/questions/246143

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档