如何根据cookie值制作单独的缓存页面?

时间:2015-01-19 18:13:50

标签: php nginx varnish varnish-vcl

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

我遇到了这个很棒的解决方案Adaptive Images,但是此解决方案无法与清漆一起使用。

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

我认为,如果我找到一种基于cookie值(adaptive images脚本的一部分)分离缓存页面的方法 - 那么每个图像将保持基于用户屏幕宽度。

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

请帮我为此创建合适的vcl代码。
1.分离应仅适用于图像(jpg,gif,png) 2.它应该根据cookie_a

的值分隔每个缓存

谢谢

1 个答案:

答案 0 :(得分:0)

基本上你需要做的就是更改vcl_hash方法,其中varnish存储数据以使用cookie,只有当url是图像时(jpg,gif,png)。 为了简单起见,我们假设Varnish将图像存储在密钥" image.jpg"中,你要做的就是告诉Varnish密钥是' image- [大小] .JPG"其中[size]可以是cookie,图像大小或两者兼而有之 要解决“仅适用于图像”的问题。问题你必须做像

这样的事情
if (req.url ~ '(jpg|gif|png)') {
    // Change the hash here
}

考虑到这一点,here你可以找到一个很好的例子来说明这一点 其他有用的网站:

相关问题