Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/performance/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP选项卡或单独的页面_Php_Performance_Tabs - Fatal编程技术网

PHP选项卡或单独的页面

PHP选项卡或单独的页面,php,performance,tabs,Php,Performance,Tabs,我对我的项目中的标签有疑问。它是一个包含多个选项卡的用户视图页面。每个选项卡都有详细信息,如用户基本信息、社交档案信息、技能等。当前设置为带有$_GET['tab']值的PHP选项卡。每个选项卡都有不同的$_GET['tab'],if条件检查$_GET['tab']变量并加载该选项卡中包含文件的内容。此页面中大约有10个选项卡和10个if条件 页面本身有其他包含文件,如页眉、页脚、侧菜单等 我和我的朋友就此进行了讨论,他建议为每个选项卡设置单独的页面,并避免页面中出现if条件 我的问题是: if

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

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

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

我的问题是:

if条件的数量是否真的改变了页面的性能? 我应该切换到单独的页面并使用可视选项卡吗?
我认为最好的方法是使用index.php文件,该文件具有$\u GET['tab']检查,并使用require\u 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个选项卡的单页:

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

缺点: 它最多需要9条IF语句来返回结果集,甚至显示404错误页,即无效的$\u GET值

有10个不同的页面:

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

缺点: 您需要将模板复制到10个文件中。但是,由于选项卡的数量永远不会太多,而且通过复制第一个文件来创建它们会非常容易,所以不会花费太多时间。另外,另一种方法仍然需要添加if语句,就开发时间而言,没有太大区别

所以我会选择多个静态文件的第二个选项。如果您要有很多动态页面选项卡,因此不需要创建许多静态页面,则最好使用$\u GET选项。由于标签永远不会超过10,我想这是最大值,我想第二个选项在这里是推荐的


注:以上比较是10个国际单项体育联合会和10个独立页面之间的比较。使用带有$\u GET file include With whitelisting single IF选项的单页,与单独的页相比,性能差异更小,因为404页将在单个IF&数组检查后返回,而不是10个IF。因此,就开发而言,您最终可以做对您来说最简单的事情。

1如果是10,则切换性能确实不是问题。2主要是基于观点/太广泛。如果你有10个标签,创建10个如果没有意义,只需使用可能值的白名单,如果标签值在白名单中,那么你只需要包括“标签/”$_获取['tab']。php’。您只需将选项卡文件名设置为与选项卡名称代码类似的名称,然后就可以直接将其包括在内。您必须检查选项卡变量是否有效,因此必须使用选项白名单来避免安全问题Hanks@mTorres,这是一个有趣的问题。我想我必须这样做!