我有一个很大的页面,里面有很多意大利式代码。我不确定哪个解决方案对服务器来说更快。
第一个解
<div> ... many html code ....
<?
if(isset($ubo['day']['xxl']['0']))
{
$firstHit = $ubo['day']['xxl']['0']['title'];
echo "<div style='"cursor:pointer;'">$firstHit </div>";
}
?>
... many html code .... </div>
这个解决方案(我用'而不是")
<?
// many php code
if(isset($ubo['day']['xxl']['0']))
{
$firstHit = $ubo['day']['xxl']['0']['title'];
}
// one echo with all html code
echo "<div> ... many html code ....
<div style='cursor:pointer;'>$firstHit </div>
... many html code .... </div>";
?>
或此解
<?
// many php code
if(isset($ubo['day']['xxl']['0']))
{
$firstHit = $ubo['day']['xxl']['0']['title'];
}
// one echo with all html code
echo "<div> ... many html code ....
<div style='"cursor:pointer;'">$firstHit </div>
... many html code .... </div>";
?>
实际上,这并不重要。重要的是你的代码是可维护的和干净的。您应该考虑使用像CodeIgniter或CakePHP这样的PHP框架来使您的代码结构更加良好。
您应该在PHP echo
/print
语句中尽可能少地使用HTML;最好关闭PHP标记,只保留自然的HTML。这是因为解析器不会遍历echo
/print
语句并解析它。因此,就速度而言,您的第一个解决方案肯定是最好的。
在提出的解决方案中,我认为第一个可能是最好的。一般的规则是,你应该把尽可能多的东西放到HTML中。这既是为了开发者的利益,也是为了服务器的利益。<?php ?>
之外的内容基本上是原始数据,虽然它仍然需要在某种程度上进行解析,但基本上可以直接提供给用户。
如果有的话,你可能想进一步完善它:
<!-- as a note: in all of your examples except the first, this div exists.
In the first it only exists if the isset returns true. -->
<div style="cursor:pointer;">
<php?
if(isset($ubo['day']['xxl']['0']))
{
echo $ubo['day']['xxl']['0']['title'];
} ?>
</div>
您还可以通过将$ubo['day']['xxl']
存储在页面其他地方的某个局部变量中来进行优化。
是否有性能问题?如果不是,就不要纠结于"对服务器更好",而应该做"对你的代码更好"。
我想说的是,所有这些都是一样的,大多数性能是由于i/O (sql查询/web服务,硬盘)而不是语法细节。
因此,为自己编写最好的代码,稍后您将看到性能。
第二种解决方案可能比第一种更快,因为您只发送一次内容,而且它看起来也更好一些(PHP与HTML更分离)。
然而,这三种解决方案之间的性能差异将非常小,你真的不应该注意它
遵循"过早的代码优化是邪恶的"的提示:-)我不认为这对你在给定代码中使用什么有(很大)区别。在mvc中有一个干净的代码分离会更好。然后,你可以使用模板引擎,它支持缓存大量的html代码,而不需要每次都输出一个echo!此外,这种性能优化对数据库问题、一般代码结构和客户端代码有更大的影响。例如,避免内联css样式以减少传输的html代码。
- 你使用PHP操作码缓存吗?
- 是否使用memcached生成子页面? 你优化你的数据库查询了吗?
- 你使用图标组图像吗?你压缩JS和CSS吗?
- 你真的用完了所有容易摘到的果子吗?