没有两个站点是一样的。您确实需要使用jmeter和基准测试之类的工具来查看问题点在哪里。您可以花费大量时间进行猜测和改进,但是只有在衡量和比较更改后才能看到真正的结果。
例如,多年来,MySQL查询缓存一直是我们所有性能问题的解决方案。如果您的网站运行缓慢,MySQL专家建议打开查询缓存。事实证明,如果您的写入负载很高,则缓存实际上会崩溃。如果您在没有测试的情况下将其打开,您将永远不会知道。
并且不要忘记,您从未完成过扩展。处理10req / s的站点将需要更改以支持1000req / s。而且,如果您足够幸运,需要支持10,000req /
s,那么您的架构也可能看起来完全不同。
资料库
- 不要使用MySQLi- PDO是“现代” OO数据库访问层。要使用的最重要功能是查询中的占位符。它足够聪明,可以为您使用服务器端准备和其他优化。
- 您可能现在不想破坏数据库。如果您确实发现一个数据库无法满足需求,则有多种技术可以扩展,具体取决于您的应用程序。如果读取次数多于写入次数,则复制到其他服务器通常效果很好。分片是一种将数据拆分到多台计算机上的技术。
快取
- 您可能不想缓存在数据库中。数据库通常是您的瓶颈,因此向数据库添加更多IO通常是一件坏事。有几个PHP缓存可以完成类似APC和Zend的功能。
- 启用和禁用缓存来衡量您的系统。我敢打赌,您的缓存比直接提供页面要重。
- 如果需要很长时间才能从数据库中构建评论和文章数据,请将memcache集成到系统中。您可以缓存查询结果并将其存储在memcached实例中。重要的是要记住,从内存缓存中检索数据必须比从数据库中汇编数据要快得多,以了解任何好处。
- 如果您的文章不是动态的,或者在生成文章后进行了简单的动态更改,请考虑将html或php写出到磁盘上。您可能有一个index.php页面,该页面在磁盘上查找该文章,如果有的话,它会将其流式传输到客户端。如果不是,它将生成文章,将其写入磁盘,然后将其发送给客户端。从磁盘上删除文件将导致页面被重写。如果在文章中添加了评论,请删除缓存的副本-它将重新生成。



