我可以更改缓存命中与未命中的页面背景吗?

时间:2018-01-19 19:39:21

标签: caching varnish

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

Varnish不会让我修改正文,只是标题和Cookie。

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

以前是否有人做过这类事情,它是如何运作的?

2 个答案:

答案 0 :(得分:2)

我认为更优雅的方式是使用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";
    }
}

答案 1 :(得分:0)

您将通过cookie方法体验'竞争条件',因为该状态在浏览网站的所有标签之间共享。最好的方法是:

  1. hit
  2. 中存储miss / req.http.whatever个标记
  3. 在所有网页中加入ESI片段(例如/color-hack.html)。
  4. 添加VCL逻辑以在/color-hack.html期间捕获vcl_recv个请求,跳转到vcl_synth,并根据req_top.http.whatever中的标记值生成一些HTML或JavaScript。然后,您可以在客户端使用它来更改您想要做的任何步调的颜色。
  5. 我知道它看起来有点复杂,但如果您熟悉ESI&amp ;;它应该很容易实现。综合反应。