更好的性能:多个包含或预处理数据?

时间:2011-09-04 13:19:06

标签: php html performance

最佳选择是什么? (频繁请求permlink的性能)

  • 对数据文件的多次访问(多次访问文件系统是个问题?):
readfile("meta-data.html");
readfile("header.html");
readfile("ads.html");
readfile("body-tags.html"); 
readfile("ads2.html");
readfile("profile-target-userA.html"); 
...
  • 使用模板和str_replace预处理页面部分:
$file = file_get_contents("template.code"); 
$file = str_replace("<!-- meta-data -->", $new_meta_data, $file);
$file = str_replace("<!-- header-->", $new_header, $file);
... 
echo $file;

欢迎其他替代方法。

2 个答案:

答案 0 :(得分:1)

假设你的操作系统有一个I / O缓存,第二种方法很可能会变慢。在内存中移动字符串(这是str_replace将要执行的操作)可能比命中磁盘要昂贵得多,尤其是当操作系统当前缓存文件时。

但是,您应该在模板/视图系统的基础上保持可维护性和灵活性,而不仅仅是性能。最好在性能方面牺牲一点来生成更易维护的模板。

通常,我看到模板编写为PHP文件 - 一个会设置一些变量,然后include()模板。然后PHP将执行它们,这为编写视图提供了相当大的灵活性。而且,如果模板文件只是HTML,include()将与readfile()具有相同的效果。

答案 1 :(得分:0)

根据定义访问一个文件比访问多个文件更快,只要它们位于同一个驱动器上(但是否则它不是公平的,例如当一个文件在硬盘上而另一个文件时文件在SSD上)。必须查找文件的物理位置,驱动器必须“搜索”它,这将为您包含的每个文件花费更多时间。

但是你在这里谈论微秒,所以我闻到了过早的优化。