
WordPress 安装了一个 WPTouch 插件,同一个网址,当移动设备和 PC 访问的时候会显示不同的页面。
Nginx 启用了 FastCGI 缓存,根据 UA 生成不同的缓存文件。
现在的问题是,当 A 手机访问的时候会生成缓存文件 A , B 手机访问的时候会生成缓存文件 B ;而我希望所有的移动设备只生成一个缓存文件 A , PC 端访问生成文件 B 。
Nginx 配置如下:
fastcgi_cache_path /home/www/wp-content/cache levels=1:2 keys_zOne=WORDPRESS:250m inactive=7d max_size=1G; #fastcgi_temp_path /home/www/wp-content/temp; fastcgi_cache_key "$scheme$request_method$host$request_uri$mobile_request"; fastcgi_cache_use_stale error timeout invalid_header http_500; fastcgi_ignore_headers Cache-Control Expires Set-Cookie; server { listen 80; server_name abc.com; index index.html index.htm index.php; root /home/www; set $skip_cache 0; set $mobile_request 0; if ($http_user_agent ~* '(iPhone|iPod|incognito|webmate|Android|dream|CUPCAKE|froyo|BlackBerry|webOS|s8000|bada|IEMobile|Googlebot\-Mobile|AdsBot\-Google)') { set $mobile_request 1; } if ($request_method = POST) { set $skip_cache 1; } if ($query_string != "") { set $skip_cache 1; } if ($request_uri ~* "/wp-admin/|/xmlrpc.php|wp-.*.php|/feed/|index.php|sitemap(_index)?.xml") { set $skip_cache 1; } if ($http_cookie ~* "wordpress_[a-f0-9]+|wp-postpass|wordpress_no_cache|wordpress_logged_in") { set $skip_cache 1; } location / { try_files $uri $uri/ /index.php?$args; rewrite /wp-admin$ $scheme://$host$uri/ permanent; } location ~ [^/]\.php(/|$) { try_files $uri =404; fastcgi_pass unix:/dev/shm/php-fpm.sock; #fastcgi_pass 127.0.0.1:9000; fastcgi_index index.php; include fastcgi.conf; fastcgi_cache_bypass $skip_cache; fastcgi_no_cache $skip_cache; fastcgi_cache WORDPRESS; fastcgi_cache_valid 200 301 302 7d; add_header X-UA-Detect $scheme$request_method$host$request_uri$mobile_request; add_header X-Frame-Options deny; add_header X-Content-Type-Options nosniff; add_header X-Cache "$upstream_cache_status From $host"; } location ~* ^.+\.(ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ { access_log off; log_not_found off; expires max; } location ~ /\. { deny all; access_log off; log_not_found off; } location = /robots.txt { access_log off; log_not_found off; } access_log /home/www/wp-content/logs/access.log; error_log /home/www/wp-content/logs/error.log; } 求各位大能帮忙看看该如何配置,感激不尽!
1 allenhu 2016-10-14 22:36:04 +08:00 via Android 你不累吗?我只用了 supercache |
3 qwer1234asdf 2016-10-14 22:57:17 +08:00 我啥 cache 也没用。。 |
4 qwer1234asdf 2016-10-14 22:57:38 +08:00 顺便说下,一个插件也没装。。。 |
5 Technetiumer 2016-10-14 23:08:18 +08:00 拿 CDN 缓存整个网站,包括 HTML ,不是更好 CloudFlare 设置页面规则缓存全部,包括 HTML 和 Ajax 请求,把 CloudFlare 当服务器,然而大陆访问 CloudFlare 并不快,如果百度云加速有页面规则,可以参考。 另外,自适应的模板大法好 |
6 dcd OP |
7 hahasong 2016-10-15 00:02:44 +08:00 现在是 2016 年了,大家都在用 fpm |
8 wdlth 2016-10-15 00:25:17 +08:00 现在是 2016 年了,大家都在用 lua |