使用静态HTML标签和通过PHP echo它们有什么区别?

4

我有一个大项目,我的结果页面是固定的。因此,我需要一个带有可变内容的恒定页面。这就是为什么我必须使用动态标签echo '<div>anything</div>';而不是静态标签<div>anything</div>

这是我的结构

// resultpage.php

<html>

<head>
    <?php
           switch ($_GET['arg']) {
               case 'one':
                   $contents = '<div>content 1</div>';
                   break;
               case 'two':
                   $contents = '<div>content 2</div>';
                   break;
    ?>
</head>

<body>
   <?php echo $contents; ?>
</body>

</html>
提示:实际上$contents包含超过200行。
现在我想知道,每个请求会发生什么?在这种模式下,我的带宽会浪费吗?是否最好为每个内容创建单独的文件(包括静态HTML标记)?就像这样:
// content1.php

<html><head></head>
<body> <div>content 1</div> </body>
</html>

// content2.php

<html><head></head>
<body> <div>content 2</div> </body>
</html>

// And creating a php file contained switch() for selecting contents. 

无论哪种方法更优化?实际上,我想知道当一个用户向我的网站发出请求时,服务器对我的HTML和PHP标记做了什么?
需要注意的是,我的结果页面使用AJAX,页面不会刷新。只返回纯文本数据更好还是返回所有内容(包含HTML标记)更好?(同时页面保持不变且不刷新)

2
创建一个单独的HTML文件,并使用PHP在其中操作结果。何必让它变得复杂。 - Abhinav Gauniyal
@AbhinavGauniyal 看,我的结果页面正在使用ajax,页面不会刷新,在这种情况下(正如你所说),我的内容每次都应该echo。这不是很糟糕吗? - user4920811
1
不,这与服务器的带宽无关。PHP 中的所有内容都在服务器端进行“解释”。客户端只接收生成的输出,即在此情况下正确的“html”页面。 - DarkBee
@DarkBee 啊,我明白了,那就没有什么区别。只是告诉我,如果一个页面的内容每次都被 echo,而它在页面中是不变的,你也说这没有关系?看,我正在使用 ajax,我的静态标签可以在页面中保持不变,我每次都 echo 所有这些标签,这样做不好吗? - user4920811
如果您的网站主要部分保持不变,则建议仅更新 Ajax 用于更新/获取动态内容的容器。 - DarkBee
3个回答

1
你询问了带宽使用情况:很可能你不会注意到差异,因为这是通过网络传输的数据量。在每种情况下,数据量都是相同的,但差异在于你如何生成这些数据。
至于静态文件,PHP预处理器无需参与,这将为您提供稍微更好的性能,但代价是可维护性。
对于PHP:优点
正如其他答案已经指出的那样,强烈建议您采用PHP方法处理页面的动态内容。这将使您免于拥有多个副本,并且每次想要在所有页面上进行更改(例如添加样式类)时需要维护。
做得好,PHP可以节省大量精力来最小化您重复的代码量。
最后,有些事情您只能用静态文件做不到,您需要求助于任何类型的预处理器。 PHP是最受欢迎的之一,任何托管公司都可能支持它。
对PHP的反对意见:缺点

不足之处在于,需要配置服务器本身。任何HTTP服务器都可以托管静态文件,但您需要有PHP才能预处理PHP文件。

此外,每次提供页面时都需要进行一些预处理。如果您没有太多需要计算的内容,这可能不是问题,但这会占用CPU时间。

最后,还有PHP服务器本身的支持。错误使用PHP可能会导致安全问题,并且必须定期更新和打补丁以使其安全。如果完全避免使用PHP,这将不会成为一个问题(至少不是针对PHP)。


那么你的建议是什么?是使用echo还是静态HTML标签? - user4920811
@stack 这真的取决于你的情况,但如果我是你,我会选择使用 PHP 并重用代码。如果你有很多页面,这可能会变成一个难以维护的噩梦。 - Alpha
你知道我的问题是什么吗?!就是使用ajax时,当我发送请求时,它最好给我纯文本内容还是所有内容(包含HTML标签)?(页面保持不变且不刷新的情况下) - user4920811
@stack AJAX就像其他HTTP请求一样,因此我之前提到的所有要点仍然适用。我会选择使AJAX响应尽可能小,因为这些将影响用户体验,并且更容易处理和显示在屏幕上。尽可能多地在原始页面上加载内容,并使用AJAX请求获取稍后需要的小部分内容。 - Alpha

0

你应该以HTML的模板/结构为基础来创建你的页面。如果HTML是一致的,除了内容之外,那么你应该使用同一个页面,并使用PHP来确定内容。理想情况下,这些内容应该从数据库中提取,并有一个单独的界面来操作/编辑内容(CMS)。

如果页面的结构/布局与你当前的模板完全不同,那么你应该创建一个新的模板,具有新的结构。

理想情况下,你应该将重复的项目拆分成单独的文件(例如标题、页脚、侧边栏等)。然后,你可以轻松地调用这些部分到你的模板中,并轻松地在所有页面上更新这些部分。

希望这能帮到你。


是的,我的内容完全不同,那么你所说的“然后你应该创建一个新模板,具有新的结构。”的意思是什么?你的意思是我要用echo输出它们吗? - user4920811
想象一下,HTML 是房子的框架,而内容则是房子的颜色。颜色对于实际布局没有任何意义。因此,您应该查看框架,并为所有适用的页面使用相同的框架(php 页面)。如果页面的结构(不包括内容)完全不同,无法使用 PHP 进行操作,则应使用新模板(php 页面)。 - Samuel Cook
最后,你知道我的问题是什么吗?!就是使用ajax时,当我发送请求时,它是给我纯文本内容好还是所有内容(包含HTML标签)好呢?(页面不变且不刷新的情况下) - user4920811
我会将已经格式化为HTML(p标签等)的内容发送给您,然后您只需将其放入您的“内容容器”中即可。 - Samuel Cook

0

好的,确实可以使用静态HTML完成相同的事情。但是它是动态的吗?为了回答这个问题,PHP将优于HTML。因为如果您有可变数量的内容。假设您不知道您有多少内容,那么您应该使用PHP,然后可以使用一些编程条件和循环显示所有内容。但是对于您所谈论的特定系统,使用HTML处理您的要求是可以的,因为这里有一些静态开关案例,只能显示某些特定数量的内容。尽管如果您打算更改内容,则必须更改代码,但如果您使用PHP,则只需更改数据库中的内容列,然后站点的内容就会更改。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接