根据cookie中的值为同一页面提供不同的清漆缓存?

时间:2014-05-09 06:59:05

标签: varnish

这个问题可能没有任何意义,因为我是清漆新手,但现在是:

我正在构建一个支持多种货币的商务网站,这些网页由清漆提供服务。每当货币发生变化时,它都会根据新货币更改cookie,并且由于请求标题中的cookie发生变化,它是否会创建清漆以创建不同的缓存?如果货币值发生变化以显示正确的产品价格,我需要提供新内容。

如果上面没有刷新清漆,可以通过清漆配置来缓存cookie中不同货币值的不同内容或以某种方式修改页眉吗?

1 个答案:

答案 0 :(得分:-2)

首先,抱歉(非常)迟到的答案。希望它能帮到你!

最简单的方法是不缓存主页,并使用PHP或apache或nginx的mod_rewrite重定向主页。

第1步 - 不要缓存主页

清漆

<强> default.vcl

sub vcl_recv {
    ...

    # dont cache the homepage
    if (req.url ~ "^/") {
        return(pass);
    }

    ...
}

请记住在任何更改后重新启动清漆。

第2步 - 重定向到货币页面

在此处,选择以下选项之一,以重定向。

1。 PHP

(假设货币cookie名为“cry”)

<强>的index.php

if (!empty($_COOKIE["cry"]))
{
    header("HTTP/1.1 301 Moved Permanently");
    header("Location: http://www.yourdomain.co.uk/?currency=".$_COOKIE["cry"]); 
}

2。 nginx的

(再次,让我们说货币cookie名为“cry”)

网站启用中的

yoursite 文件 - nginx

server {
    listen       80;
    server_name  bestsellers.co.uk www.bestsellers.co.uk;

    location = / {
        if ($cookie_cry ~* "usdollars") {
            rewrite ^ http://www.yourdomain.co.uk/?currency=usd permanent;
        }
        if ($cookie_cry ~* "ilshekels") {
            rewrite ^ http://www.yourdomain.co.uk/?currency=ils permanent;
        }
        if ($cookie_cry ~* "rusruble")  {

        ... and more ...
    }

    ...
}

请记住在任何更改后重新启动nginx。

3。 apache2的

我真的不知道如何在apache中执行此操作,但谷歌可以帮助您。'


你应该没事。 http://www.yourdomain.com/?currency=usd不是http://www.yourdomain.com/?currency=ils。如果您有任何问题,请在此处发表评论。