2013-02-27 36 views
-1

通过编写一个函数库,在查看服务器端(PHP)实现与客户端(jQuery)实现时呈现标记的函数库,对生成网页有什么影响?生成标记,jquery或php更快吗?

服务器端: 客户端发出请求,服务器通过运行php程序渲染标记,将标记发送给客户端,浏览器加载它并显示网页。

function makeTitle($text) { 
    echo <<<HTML 
    <style> 
    #title { 
    color:red; 
    } 
    </style> 
    <div id = "title">{$text}</div> 
    HTML; 
} 

makeTitle("This appears as red text"); 

客户端: 客户端发出请求时,JavaScript是一个.html文件发送给客户端,客户端的浏览器呈现的标记,加载它和网页显示。

var text; 
function title(text) { 
$('body').html(function() { 
    return '<div id = "title">'+text +'</div>'; 
}); 
$("#title").css("color","red"); 
} 

title("This appears as red text"); 

哪个实现将更有效率,使用户将不得不等待更短的时间,无论是对服务器运行PHP程序或运行JavaScript程序的浏览器,在何种情况下将各自执行最在生成静态CSS和HTML方面高效?

+4

你必须测试它,但我怀疑服务器会非常非常快。 jQuery没有速度恶魔,服务器应该比单线程客户端(可能是平板电脑或手机)要烦琐得多。 – RobG 2013-02-27 03:55:54

+0

这一切都取决于应用程序的性质和预期的设计。这不是一个纯粹根据速度/效率标准应该回答的问题。每个选项都有许多不同级别的折衷。 – prodigitalson 2013-02-27 03:57:13

+0

我将编辑这个问题,以清楚表明我并非旨在设计一个CMS – Emanegux 2013-02-27 03:58:06

回答

4

在服务器上生成会很快,但是您在jQuery中提到了一个.html文件的请求。为什么不使用jQuery生成html?您可以通过将jQuery对象传递给一个封闭的HTML标记来创建DOM元素,例如$('<div/>')。这是一个使用你给出的例子的实现。

function makeTitle(text) { 
    $('body').append(
     $('<div/>', { 
      id: 'title' 
     }).css({ 
      color: 'red' 
     }) 
    ); 
} 

makeTitle("This will appear as red text"); 

如果你正在寻找一个简单的模板解决方案,PHP将是一个不错的选择,但如果你想创建一个Web应用程序或网页,将频繁更改的内容不刷新页面,我发现它令人难以置信的简单并快速使用PHP来生成数据,并使用jQuery来生成标记。

0

我认为通过PHP生成标记更可靠,因为如果在浏览器上禁用javascript,可能不会显示标记。

除此之外,客户端计算机可能具有不同的配置,这将进一步影响标记生成响应时间。所以我认为通过PHP的标记会更有效率。

+0

-1。 – kay 2013-02-27 04:10:41

0

我会用PHP。处理时间的差异很小,但对于没有启用JavaScript的客户也适用,并且不需要在没有其他地方使用的情况下下载jQuery的开销。

+0

这更多的是在2008年的一个争论..它几乎就像争论支持IE6。 – 2013-02-27 03:59:13

+0

这个问题也是2008年的一个争论,无论是渲染字符串服务器端还是编辑DOM客户端都会更快。所以看起来即使很小的性能增强对OP也很重要。 – sjdaws 2013-02-27 04:01:38

+1

@pst需要辅助技术的人们(例如视力受损的人)使用的许多浏览器比IE6更糟糕。在不了解OP的预期应用和目标受众的情况下,我不排除这种担忧。 – Paul 2013-02-27 04:01:50

4

使用javascript呈现标记时的另一个含义是,您的标记对于Web爬虫不可见。如果SEO是一个问题,不是最好的方法。

+1

这是一个非常有趣的观点。必须有方法通过ajax为纯粹的客户端实现发送爬虫的元数据。 – Emanegux 2013-02-27 04:03:17