NGINX和memcached - 整页缓存和TTL

时间:2012-11-15 09:51:13

标签: wordpress nginx memcached vbulletin

我正在为我的所有网站使用nginx,memcached和APC。我主持的是一个wordpress网站,一个vBulletin论坛和一些其他网站。

我已经设置了nginx和memcached,以便nginx首先检查memcached服务器以查看它是否有整页的条目,如果它没有将请求传递给PHP并缓存整个页面 - 然后将其显示为用户,请参阅配置链接:http://pastebin.com/ZFSrA9e5

目前vBulletin论坛正在使用“$ config ['Datastore'] ['class'] ='vB_Datastore_Memcached';” WP博客正在使用Memcached对象缓存(http://wordpress.org/extend/plugins/memcached/)

我现在只是将WP作为memcached中的完整页面缓存(如上所述),看看我是否遇到任何问题 - 到目前为止一直都很好。

我想要实现的是良好的加载时间和低负载。我遇到的问题/遇到的问题是:

  1. 我如何知道例如用户第一次登录,memcached缓存第一个用户的请求。然后下一个用户来了,memcached为第一个用户提供缓存页面 - 是否考虑到这一点/阻止这个?

  2. memcached / nginx如何/何时刷新全站点缓存以更新缓存?

  3. 我建议同时运行APC和memcached吗?据我所知; memcached缓存小值和apc缓存已编译的PHP代码,对吗?

  4. 如果有人可以在这些问题上给我启发,那会很棒。

1 个答案:

答案 0 :(得分:1)

1)您的缓存响应完全取决于:

set $memcached_key "wordpress:$request_uri";

因此每个缓存条目仅依赖于URI,用户身份验证信息没有意义。第二个请求与第一个请求相同,因为它将具有相同的memcache密钥。如果要为每个登录用户存储单独的缓存密钥,则需要设置更多不同的密钥,如下所示:

set $memcached_key "wordpress:$request_uri$scheme$host$cookie_PHPSESSID";

2)这取决于WP-plugin。 Nginx从不刷新缓存,强制刷新你需要重启memcache。

3)是的,它们都做不同的事情,APC缓存编译的PHP代码,所以它不必每次都对每个请求进行编译(它只在服务器重启或PHP文件更改时重新编译)。 Memcache将页面的一些部分或整个页面(您的场景)存储在内存中,当在memcache中找到nginx提供的KEY时,甚至不涉及PHP - 整个页面直接从memcahced内存中提供。

希望这有帮助)