我正在开展一个非常大的项目 - 测验系统(考试)。并提出一些问题。首先,这是最好的解决方案:
1)从MySQL数据库获取所有页面内容并创建php缓存
或
2)将页面内容保存在静态文件中?
哪种解决方案比其他解决方案更快?
答案 0 :(得分:3)
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。来自WIKI page:
大多数PHP加速器通过缓存PHP的编译字节码来工作 脚本,以避免解析和编译源代码的开销 每个请求(部分或全部可能永远不会被执行)。至 进一步提高性能,缓存的代码存储在共享中 记忆并从那里直接执行,最大限度地减少慢速 磁盘读取和内存复制在运行时。
为了进一步加速任何大型网站,您确实需要使用内存数据库,例如Redis(我喜欢这个)或Memcached。所有大型网站都使用其中一种。例如Facebook,如果没有Memcached,Twitter就无法运行(Redis也可以运行,但是他们使用Memcached)。这也将真正加快您的网站。
答案 1 :(得分:2)
假设不涉及缓存,提供静态文件总是比提供动态页面更快。 但,无论您运行何种类型的网站,都应始终通过网络服务器,框架或Squid或{{3}等工具进行缓存。 }。
最后,您应该根据网站的速度做出决定,而不是基于将来哪个选项将用于最易维护的系统。
答案 2 :(得分:2)
即使静态页面稍微比从数据库加载每个页面更快,对于这些项目,您还必须考虑许多其他因素。仅针对性能进行优化可能很有吸引力,但您不希望成为向用户解释为什么他们需要花费10分钟来创建新测验的人,因为“数据库运行效率更高”。
您需要关注的是用法。如果你是唯一一个要维护它的人,那么静态页面可能并不坏。但是,如果您要将页面交给非技术用户,或者页面需要经常更换,那么这就是为什么动态页面具有管理界面的原因。
如果这是一个通用的应用程序,我会“优化用户”而不是性能。当然,后者可能会轻微点击,但最后,不要构建你不想维护的东西。快速变化的多用户应用程序 - 使用管理后端。
答案 3 :(得分:0)
这完全取决于您的上下文,如果您的数据更改率更高,那么建议动态网站从数据库加载页面,但如果您想快速构建它,那么显然静态是首选!