【问题标题】:PHP tabs or Separate pagesPHP 选项卡或单独的页面
【发布时间】:2014-09-17 05:47:45
【问题描述】:

我对项目中的选项卡有疑问。它是一个用户视图页面,其中包含多个选项卡。每个选项卡都包含用户基本信息、社交资料信息、技能等详细信息。当前设置是带有$_GET['tab'] 值的 PHP 选项卡。每个选项卡都有不同的$_GET['tab'],if 条件检查$_GET['tab'] 变量并在该选项卡中加载包含文件的内容。此页面中大约有 10 个选项卡和 10 个 if 条件。

页面本身还有其他包含文件,如页眉、页脚、侧边菜单等。

我和我的朋友对此进行了讨论,他建议为每个选项卡设置单独的页面,并避免页面中的 if 条件。

我的问题是:

  1. if 条件的数量是否真的会改变页面的性能?
  2. 我应该切换到单独的页面并具有可视标签外观吗?

【问题讨论】:

  • 1) 如果是 10 个 ifswitch 性能真的不是问题。 2) 主要基于意见/过于宽泛。

标签: php performance tabs


【解决方案1】:

我认为最好的方法是拥有一个 index.php 文件,该文件具有 $_GET['tab'] 检查并使用 require_once()include() 加载选项卡。

index.php 结构示例:

<?php

//...

require_once('header.php');

//...

if ($_GET['tab'] == '1')
{
    require_once('first_tab.php');
}
else if ($_GET['tab'] == '2')
{
    require_once('second_tab.php');
}

//...

require_once('footer.php');
?>

没有理由担心性能。使用这种逻辑可以让您更轻松地编写更简洁的代码并避免 1k 行文件。

【讨论】:

  • 如果你有10个标签,创建10个ifs是废话,只使用可能值的白名单,如果标签值在白名单中那么你只需要include('tabs/' . $_GET['tab'] . '.php')。您只需使选项卡文件名类似于选项卡名称代码,然后您可以直接包含它(您必须检查您的选项卡变量是否有效,因此必须使用选项白名单以避免安全问题)
  • 感谢@mTorres,这是一个有趣的观点。我想我必须这样做!
【解决方案2】:

理想情况下,您应该以这样一种方式进行编码,即脚本在服务器上以最短的时间完成处理(使用更少的资源),并且页面输出在浏览器上最快地返回给用户。但是,有时会考虑其他因素,例如开发和维护时间。即,如果您可以在开发和维护中节省大量时间,您可以选择该选项,即使它可能导致脚本运行时间增加几分之一毫秒。因此,您应该始终在任何此类情况下找到最佳情况。

在这种情况下,您将拥有一个包含多个选项卡的页面。所以只需比较两种方法:

带有 10 个标签的单页:

优点: 只需要一个文件。但是,这里的开发和维护时间或多或少是相等的。因为尽管您不必创建另一个页面并包含模板文件,但您必须添加 IF 语句。并且为了维护,当一个选项卡被删除时,你将不得不去相应的 if 部分并删除代码。使用其他选项,您可以删除文件。

缺点: 最多需要 9 个 IF 语句才能返回结果集,甚至显示 404 错误页面(即无效的 $_GET 值)。

有 10 个不同的页面:

优点: 不需要 IF 语句。因此,加载任何选项卡以及返回 404 错误页面会更快一些。

缺点: 您需要将模板复制到 10 个文件中。但是,由于选项卡的数量永远不会太多,并且通过复制第一个文件来创建它们会很容易,因此不会花费太多时间。再加上其他方法还是需要加if语句,就开发时间而言没有太大区别。

所以我会选择多个静态文件的第二个选项。如果您将拥有很多动态页面(选项卡),则首选 $_GET 选项,这样您就不需要创建很多静态页面。由于标签永远不会更多(我猜最多 10 个),我会说这里推荐第二个选项。

注意:以上比较是在具有 10 个 IF 的单页和 10 个单独的页面之间进行的。使用带有 $_GET 文件的单个页面包含白名单(单个 IF)选项,与单独页面相比的性能差异甚至更小,因为 404 页面将在单个 IF 和数组检查后返回,而不是 10 个 IF。因此,就开发而言,您最终可以做任何对您来说最容易的事情。

【讨论】:

    猜你喜欢
    • 2011-07-11
    • 1970-01-01
    • 2018-03-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-30
    • 2011-01-11
    相关资源
    最近更新 更多