PHP/HTML -意大利面条,最快的服务器代码


PHP/HTML - Spaghetti, fastest code for the server

我有一个很大的页面,里面有很多意大利式代码。我不确定哪个解决方案对服务器来说更快。

第一个解

<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吗?
  • 你真的用完了所有容易摘到的果子吗?