哪个更快:MySQL / PHP还是直接从静态文件服务?

时间:2011-07-29 05:57:39

标签: php mysql

我正在开展一个非常大的项目 - 测验系统(考试)。并提出一些问题。首先,这是最好的解决方案:

1)从MySQL数据库获取所有页面内容并创建php缓存

2)将页面内容保存在静态文件中?

哪种解决方案比其他解决方案更快?

4 个答案:

答案 0 :(得分:3)

基线-HTML

Baseline-html is always faster than PHP because PHP needs to be invoked

The results follow (all are at 10 concurrent users, averaged over 5 one-minute runs):

ab                       |      rel |      avg |
------------------------ | -------- | -------- |
baseline-html            |   1.2660 |  3581.54 |
baseline-php             |   1.0000 |  2829.11 |

http_load                |      rel |      avg |
------------------------ | -------- | -------- |
baseline-html            |   1.2718 |  4036.24 |
baseline-php             |   1.0000 |  3173.56 |

siege                    |      rel |      avg |
------------------------ | -------- | -------- |
baseline-html            |   1.2139 |  5060.25 |
baseline-php             |   1.0000 |  4168.76 |

但幸运的是,在编写优化的PHP代码时,PHP非常快,几乎没有任何性能影响。 PHP是一种动态语言,因此更少。

APC

此外,如果您打算在大型网站上工作,首先应该安装APC。来自WIKI page

  

大多数PHP加速器通过缓存PHP的编译字节码来工作   脚本,以避免解析和编译源代码的开销   每个请求(部分或全部可能永远不会被执行)。至   进一步提高性能,缓存的代码存储在共享中   记忆并从那里直接执行,最大限度地减少慢速   磁盘读取和内存复制在运行时。

内存数据库

为了进一步加速任何大型网站,您确实需要使用内存数据库,例如Redis(我喜欢这个)或Memcached。所有大型网站都使用其中一种。例如Facebook,如果没有Memcached,Twitter就无法运行(Redis也可以运行,但是他们使用Memcached)。这也将真正加快您的网站。

答案 1 :(得分:2)

假设不涉及缓存,提供静态文件总是比提供动态页面更快。 ,无论您运行何种类型的网站,都应始终通过网络服务器,框架或Squid或{{3}等工具进行缓存。 }。

最后,您应该根据网站的速度做出决定,而不是基于将来哪个选项将用于最易维护的系统。

答案 2 :(得分:2)

即使静态页面稍微比从数据库加载每个页面更快,对于这些项目,您还必须考虑许多其他因素。仅针对性能进行优化可能很有吸引力,但您不希望成为向用户解释为什么他们需要花费10分钟来创建新测验的人,因为“数据库运行效率更高”。

您需要关注的是用法。如果你是唯一一个要维护它的人,那么静态页面可能并不坏。但是,如果您要将页面交给非技术用户,或者页面需要经常更换,那么这就是为什么动态页面具有管理界面的原因。

如果这是一个通用的应用程序,我会“优化用户”而不是性能。当然,后者可能会轻微点击,但最后,不要构建你不想维护的东西。快速变化的多用户应用程序 - 使用管理后端。

答案 3 :(得分:0)

这完全取决于您的上下文,如果您的数据更改率更高,那么建议动态网站从数据库加载页面,但如果您想快速构建它,那么显然静态是首选!