【发布时间】:2011-05-03 13:11:28
【问题描述】:
所以。我有一个数据表,在 MySQL 数据库中,例如:
- 艺人姓名
- 艺术家传记
- 艺术家时代
比如说:100 位艺术家。
因为这些数据很少会被修改,所以我创建了一个界面,当数据被管理员修改使用内容管理系统时,系统查询数据库,并保存一个序列化的PHP数据数组作为服务器上的文件。
每次添加新艺术家时都会重新创建此文件,例如每周一次。
在前端,当页面加载而不是查询数据库时,页面只包含 文件(使用输出缓冲)并从此对象生成 HTML 页面布局。
这是个好主意吗?这会比每次加载页面时让数百名用户查询数据库更快吗?
作为这个问题的扩展,如果我开始分页数据,例如将 MYSQL 结果对象的限制设置为 10 行,将整个表作为 PHP 数组访问并将其分成 10 个组会更慢吗 - 根据查询字符串回显相关部分?
【问题讨论】:
-
只要你生成的平面文件不涉及运行几行PHP,它比查询数据库要快。 甚至更快 是创建一个 HTML 文件,您无需加载 PHP 解析器即可将其服务器化。不过,就速度而言,要记住一件事:加载页面所花费的时间有 80% 是在客户端。确保您的 javascript 和 CSS 已经过优化,并避免显示未压缩的图像。
-
您是否尝试过使用 Apache Bench 对各种方法进行速度测试?我建议以两种方式进行设置并对其进行测试。可能没有足够大的差异来担心。如果您之前没有使用过
ab,请参阅petefreitag.com/item/689.cfm。 -
每次有人想要存储序列化的东西时,更重要的问题是:为什么不使用
var_export?与序列化相比,它节省了很多开销。在那次切换之后,人们仍然可以争论 SQL / var_export 的优点,如果你只需要子集 SQL / 一个数据库可能会更快,如果你一直需要一个由var_export创建的静态 PHP 数据结构@ 可以赢。 -
PHP 序列化的另一种替代方法是 json_encode。
-
@Wrikken 非常好。我忽略了他可能只想要静态数据的子集,在这种情况下尝试读取和解释文件总是比数据库慢(更不用说文件系统的开销)。
标签: php mysql arrays performance serialization