所以我刚刚得到了一个小vps。 我已经安装了apc,加快了普通页面的20%到30%。 我正在阅读有关memcached,并得出结论,如果我不分配其他服务器,我可以使用apc同样的事情(从数据库结果caching对象)。 由于我只有一台服务器,所以apc对于caching内存中的东西同样有好处。
我仍然处于开发模式,我相信很难说什么最适合生产模式。 事情是,我的数据库查询似乎很快(介于.0008和.02之间)。 我的网页都不是数据库密集型的。
将结果caching在内存中对我有好处吗? 如果数据库现在运行良好,以后会不会很困难? 此外,连接到数据库的所有东西,加快速度(即使我caching大部分查询,每个页面都必须有一个小数据库交互会话数据)。 那么,基本上,如果我有一个有限的内存,一台机器,将使用apc,而不是让数据库被取消快得多?
想法?
你的数据库查询现在很快。 但是他们是否规模? 你有没有尝试添加一个现实世界的数据,然后再试一次? 这个问题对8个成员有什么好处,但有40万个成员?
是否caching完全是应用程序和具体情况。 如果你期望的负载增长很多,你的瓶颈是CPU,那么caching将帮助你,如果另一方面,你的瓶颈是内存,你正在使用交换,那么它会伤害你。
我并不是真的在整体caching或不caching讨论正义,但这是你需要问自己的基本问题。
很难说哪里可以find最好的平衡点。 APC的对象caching通常用于存储需要花费相当长时间重新创build的对象,例如数据库结果集太大而无法被数据库自己的查询cachingcaching,或者用于暂时的数据结构,这些数据结构在PHP请求之间保持不变。
你的数据库查询似乎很快。 如果你的查询caching命中率在95%以上,那么大部分的结果都是从内存中提供的,而APC的caching没有什么帮助。 如果你对数据库结果做了任何处理,那么它可能会付出代价将这个结果存储在内存中。
连接到数据库是相对昂贵的,所以通过把连接重新使用成单例是一个好主意。 一些数据库抽象(如Zend Framework中的抽象)会延迟实际的连接,直到实际需要为止。
因为好处依赖于您的应用程序和服务器,所以很难给出具体的build议。 我build议使用像Xdebug或Zenddebugging器的分析器来查看你的时间到底在哪里。 测量是知道的。