1

一个页面有两个缓存。一个用于PC网络浏览器,另一个用于移动浏览器。

nginx 可以完美地做到这一点。以下是 nginx conf 内容的一部分:

map $http_user_agent $device_type {
    default 'pc';
    ~(iPhone|Android|IEMobile|Balckberry) 'mobile';
}

#fast cgi cache def
fastcgi_cache_path  /data0/nginx-1.2.6/cache levels=1:2 keys_zone=nginx_webpy_cache:30m inactive=1d;

fastcgi_temp_path /data0/nginx-1.2.6/cache/temp;
fastcgi_cache_key "$request_method$scheme$host$request_uri$device_type$is_args$args";
#end

如您所见,我将 $device_type 放入缓存键中以用于两个缓存版本。

但我发现有了这个配置,我无法清除 nginx 缓存。如何清除这些拖曳缓存版本?

多谢。

4

1 回答 1

3

我已经解决了这个问题。

跟随是我的解决方案。

首先在 nginx.conf 的 http 范围内添加 map:

map $http_user_agent $device_type {
    default 'pc';
    ~(iPhone|Android|IEMobile|Balckberry) 'mobile';
}

比你需要编辑 fastcgi 缓存键,如下:

  #fast cgi cache def
  fastcgi_cache_path  /data0/nginx-1.2.6/cache levels=1:2 keys_zone=nginx_webpy_cache:30m inactive=1d;

  fastcgi_temp_path /data0/nginx-1.2.6/cache/temp;

  fastcgi_cache_key "$scheme$request_method$host/$device_type$request_uri$is_args$args";
  #end

我将变量 $device_type 放入缓存键中。现在 pc 和 mobile 有不同的缓存版本。

注意:如果你需要清除缓存,你应该清除拖曳版本。

如果你是中国人,请看下面的文章:

具有不同用户代理的 nginx 缓存

于 2013-05-21T13:40:43.820 回答