我有一个专用服务器上托pipe的客户端电子商务门户,问题是从数据库并发search请求,数据库访问时间越来越多。 我正在使用Apache + NGINX。 我只是想caching所有的search结果页面的时间有限,所以如果第二次请求同一个search查询,而不是查询数据库,它会从caching中获取数据。 这些页面是在PHP中。 请build议一个很好的方法来做到这一点。 谢谢!
memcache是一个非常常见的解决scheme,并且在PHP的标准库中受到支持,假设您的PHP安装程序具有该模块。 请参阅http://www.php.net/manual/en/book.memcache.php获取API。 您会注意到还有第二个标准模块也与memcache了接口 – 这个较新的模块被称为memcached,可能支持另一个不支持的function。 看到这个问题,并回答这两个利弊。
在开始添加额外的caching复杂层之前(实际上它不需要很复杂,但这是一个额外的事情,可能会出错,需要仔细考虑有效地实现),请确保您已经分析了查询正在做,以确保您的数据是很好的索引。 如果存在导致全表扫描的常见searchtypes,但可以使用索引search,则可以显着降低总体负载。 还要确保你有足够的内存 – 如果你的数据库由于太频繁地点击磁盘而变得很慢,因为它没有空间让你的应用程序的常用工作集保存在它的页面caching中,那么你没有足够的RAM来存放memcached特别有用。
Apache有一个caching模块(mod_cache),它可以caching你网站的服务内容更多信息在: http : //httpd.apache.org/docs/2.1/mod/mod_cache.html
您可以使用Apache的mod_expires在更长的时间范围内让重复请求的页面过期,但这在客户端级别上。
Nginx可以caching使用proxy_cache和proxy_cache_path 。