我们的缓存解决方案出现了一些问题,我希望能有一些输入。
我们使用了一种解决方案的HAProxy ->清漆-> Apache。HAProxy终止SSL并将其发送到Varnish,然后在需要时从Apache发出请求。
我们正在使用Drupal 7,清除,和Cache Expiration。我们有Cache Expiration设置为使用外部过期,并包括基座。我们的网站将“最小缓存生存期”设置为“无”,“缓存页的终止”设置为"6h“。
Varnish缓存始终具有正确版本的缓存页,并且这些页的过期是正确的。
如果匿名用户访问一个页面,比如节点/123,然后登录,然后导航回浏览器仍然服务于浏览器缓存版本的页面。这是Drupal的预期行为,因为我希望该页面为匿名用户保持缓存。
我们的内容编辑器需要重新加载页面(F5),并认为存在“错误”,因为他们需要执行此操作,以查看其页面的预期的、经过身份验证的版本。
允许对生产实例进行编辑的其他管理员如何处理这个问题?
我一直在玩弄缩短清漆的缓存寿命的想法,但这感觉就像一个创可贴(30岁的缓存和6小时的缓存)。我还玩过移除从Varnish中出来的缓存头的想法,但是允许Varnish在其生存期内保存缓存。
如果可能的话,我希望能够缓存响应来保持服务器的负载。
提前感谢!
发布于 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"; } }
发布于 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节点路径/别名的清漆缓存。
https://drupal.stackexchange.com/questions/246143
复制相似问题