哪个是更快,简单的HTML或从数据库存储的HTML?

时间:2012-11-19 09:30:21

标签: php html mysql dynamic content-management-system

我想知道如果你在纯文本html文件或PHP文件中加载你的html数据库中的所有html,它是否更快。

如果一个客户端将询问将立即发送的页面,而无需数据库交互。如果两个PHP必须从数据库加载数据然后将它们转换为对象,然后它将被填充到html文件中,并将被发送回主机。

看起来第一个选项是最快的选项。提到在这两种情况下,动态HTML都将由PHP生成,它也通过数据库加载。

我正在制作一个可以测试它的测试环境。我会自己测试一下,当我拥有它们时我会上传结果。

据我所知,Joomla从数据库加载整个HTML文档。现在,当我想自己制作CMS时,我希望我的网页能够快速加载。在我看来,Joomla很糟糕,所以我的问题仍然存在:

哪种更快的普通html或从数据库存储的html?

我看到我的问题产生了很多情绪。我将为我的问题增加一些价值。

  1. 我自己测试一下:“是的当然,我不是懒惰的,我不准备自己寻求答案”
  2. 那么你为什么要问:“我对你的意见很感兴趣。认为我能自己找到所有的答案是愚蠢的。也有很多有经验的程序员知道这个,所以为什么要'不要问“
  3. 在所有情况下,HTML都由CMS管理。这个想法是,cms必须以非常混合的方式快速运行。因此,如果您拥有一个拥有实际动态内容或内容的网站,如果您拥有一个小型网站或一个大型网站并不重要,这些内容将会持续几年。
  4. 我在评论中看到人们说没有性能问题,或者它是如此之小,它不计算在内。我的问题是:“它真的没关系吗?纯文本文件或生成表单数据库”
  5. 缓存?好的,我将介绍一下缓存。
  6. 我做了一些测试,这就是结果。对我来说,他们很奇怪,我无法理解它。我使用谷歌浏览器来存储geensteil,tweakers.nl和stackoverflow(本页),google.com的网页。然后我用chromes inspect-tools检查页面,并使用网络按钮查看我正在加载的内容。然后我复制HTML,我把它放入mysql myisam,我用PHP加载它。我在excel文件中写下了结果。

    这些是我的测试结果:

    here

2 个答案:

答案 0 :(得分:2)

简言之:

数据库 - 在服务器和数据库以及脚本之间进行握手需要时间。连接,查询,返回结果,通过脚本将结果呈现到页面。

尽管

平面文件 - 您正在直接访问该文件,因此它就好像已经嵌入到页面中一样,唯一的一次就是执行代码。

然而,除非你是一个非常慢的,也许是共享服务器,否则你不应该真正注意到它们之间的区别。 Joomla,在我看来是一个相当苛刻的CMS,如果你只是想放几页就不那么好了。如果您正在处理简单的事情,请尝试阅读一些教程并自己编写一个。这应该让你开始

  1. http://www.1stwebdesigner.com/tutorials/creating-your-own-cms-1/
  2. http://css-tricks.com/php-for-beginners-building-your-first-simple-cms/

答案 1 :(得分:1)

严格考虑两个相同HTML文件的页面加载时间(一个从文件系统提供,另一个从DB提供),静态文件总是最快。

你可以从例如Nginx,Varnish服务它,它通常比apache快。您不需要加载PHP之类的其他库,也不需要对MySQL进行连接开销,也不需要等待查询时间。

*注意:使用Apache和mod_php的PHP会产生很大的开销。使用持久连接到MySQL或连接池,php-fpm而不是mod_php和APC可以提供很多帮助,但它仍然远远不能提供静态文件的速度。*

如果您想要非常快的页面加载时间。尝试nginx + memcache(http://wiki.nginx.org/HttpMemcachedModule)。 Nginx能够直接从memcache获取数据。将整个html放在memcache中,其中键是url。这是一个示例nginx设置:

location / {
    if ($request_method = GET)
    {
                    set $memcached_key some_prefix:$request_uri;
                    memcached_pass  localhost:11211;
                    error_page 404 =200 @fallback;
    }

    default_type text/html;
    try_files $uri $uri/ /index.php$uri?$args;
}

location @fallback {
    try_files $uri $uri/ /index.php$uri?$args;
}