如何根据 Cookie 值创建单独的缓存页面



我想根据用户屏幕分辨率提供自适应图像大小。

我遇到了这个很棒的解决方案自适应图像,但该解决方案无法与清漆正常工作。

因为例如 - 如果带有移动设备的客户端 A 将请求图像,则该图像将作为移动设备的小图像存储在清漆缓存中。 并且此图像稍后也将提供给桌面用户。

我认为,如果我能找到一种方法来根据 cookie 值(自适应图像脚本的一部分)分隔缓存页面 - 那么每个图像都将基于用户屏幕宽度。

因此,如果我没有错,那么我上面描述的糟糕情况将得到解决。

您能否帮我为此创建正确的 vcl 代码。
1.分离应仅适用于图像(jpg,gif,png)。
2.它应该根据cookie_a的值分隔每个缓存

谢谢

基本上,

您所要做的就是更改清漆存储数据vcl_hash方法以使用cookie,仅当URL是图像(jpg,gif,png)时。
为了简单起见,假设 Varnish 将图像存储在键"image.jpg"中,您所要做的就是告诉 Varnish 键是"image-[size].jpg",其中 [size] 可以是 cookie、图像大小或两者兼而有之。
要解决"仅用于图像"问题,您必须执行以下操作

if (req.url ~ '(jpg|gif|png)') {
    // Change the hash here
}

考虑到这一点,您可以在这里找到如何做到这一点的很好的例子。
其他有用的网站:

  • vcl_hash(清漆 3)
  • 基本哈希

最新更新