【问题标题】:Can I change the page background for cache hit vs. miss?我可以更改缓存命中与未命中的页面背景吗?
【发布时间】:2018-01-22 20:05:37
【问题描述】:

我有一个页面缓存正在运行(清漆),并且 VCL 在交付页面时将 X-Cache 标头设置为 HIT 或 MISS。在调试时,我厌倦了在浏览器中查找页面标题以查看页面是否成功;我想改变页面背景(或边框)。

Varnish 不允许我修改正文,只修改标题和 cookie。

我可以更改 VCL 来设置 cookie,然后在插件中实现一些 Javascript 来检查 cookie 并更改背景......但我觉得必须有更优雅的方式来做到这一点。

以前有没有人做过这种事情,效果如何?

【问题讨论】:

  • wordpress 有什么特点?
  • 我在 WordPress 中询问是因为我更愿意以与缓存无关的方式将其实现为 WordPress 插件。但它被迁移到了这里......我将在那里弄清楚如何做到这一点并将其实现为 WordPress 插件。
  • 要实现任何东西,您首先需要知道需要实现的是什么。

标签: caching varnish


【解决方案1】:

我认为更优雅的方式是使用 Link 标头发送样式。这不涉及发送 cookie 或使用 Javascript。

但这仅适用于 Firefox:

sub vcl_deliver {
    if (obj.hits > 0) {
        set resp.http.X-Cache = "cached";
    } else {
        set resp.http.X-Cache = "uncached";
        set resp.http.Link = "</miss.css>;rel=stylesheet;type=text/css;media=all";
    }
}

【讨论】:

  • 特定浏览器适用于这种情况。它肯定是最干净的。
【解决方案2】:

您将在使用 cookie 方法时体验到“竞争条件”,因为该状态在浏览网站的所有选项卡之间共享。最好的方法是:

  1. req.http.whatever 中存储hit / miss 标志。
  2. 在所有页面中包含 ESI 片段(例如 /color-hack.html)。
  3. 添加 VCL 逻辑以在vcl_recv 期间捕获/color-hack.html 请求,跳转到vcl_synth,并根据req_top.http.whatever 中的标志值生成一些HTML 或JavaScript。然后你可以在客户端使用它来改变你想做的任何事情的节奏颜色。

我知道它看起来有点复杂,但如果您熟悉 ESI 和综合响应,它应该很容易实现。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-05-13
    • 2013-08-13
    • 1970-01-01
    • 2015-07-05
    • 1970-01-01
    • 2012-04-21
    • 1970-01-01
    • 2012-03-04
    相关资源
    最近更新 更多