Nginx、memcached 和 cakephp:memcached 模块总是丢失缓存

Nginx、memcached 和 cakephp:memcached 模块总是丢失缓存

我有一个简单的 nginx 配置;

server{
  servername localhost;
  root /var/www/webroot;

  location / {
    set_md5  $memcached_key $uri;
    index  index.php index.html;
    try_files $uri $uri/ @cache;
  }

  location @cache  {
    memcached_pass localhost:11211;
    default_type text/html;
    error_page 404  @fallback;
  }

  location @fallback{
    try_files $uri $uri/ /index.php?url=$uri&$args;
  }

  location ~ \.php$ {
    fastcgi_param MEM_KEY $memcached_key;
    include /etc/nginx/fastcgi.conf;
    fastcgi_index  index.php;
    fastcgi_intercept_errors on;
    fastcgi_pass unix:/var/run/php5-fpm.sock;
  }
}

我有一个 CakePHP 助手,它使用 MEM_KEY 参数将视图保存到 memcached 中。我已经测试过它并且它可以正常工作,但是,nginx 总是转到 @fallback 方向。我该如何解决此问题?问题可能出在哪里?

答案1

感谢 DukeLion 的评论,我终于知道发生了什么,nginx 正在访问 memcached 服务器,但 cakephp 正在改变密钥。

例如,我尝试访问/home_page.html

Nginx 使用 /home_page.html 访问 memcache,但找不到,因此加载 cakephp,cakephp 生成视图并将其保存在键 _home__page_html 中

解决方案是扩展 memcached cakephp 引擎。

谢谢!!!

pd:您可以在http://andy-gale.com/cakephp-view-memcache.html

相关内容