我想知道如果你在纯文本html文件或PHP文件中加载你的html从数据库中获取所有html是否更快。
如果一个客户端将询问将立即发送的页面而无需数据库交互。如果两个PHP必须从数据库加载数据然后将它们转换为对象,然后它将填入html文件并将被发送回主机。
看起来第一个选项是最快的选择。提到在这两种情况下,动态HTML都将由PHP生成,它也通过数据库加载。
我正在建立一个可以测试它的测试环境。我会自己测试一下,当我拥有它们时我会上传结果。
据我所知,Joomla从数据库加载整个HTML文档。现在,当我想自己制作CMS时,我希望我的网页能够快速加载。在我看来,Joomla很糟糕,所以我的问题仍然存在:
哪个是更快的普通html或从数据库存储的HTML?
我看到我的问题产生了很多情绪。我会为我的问题增加一些价值。
我做了一些测试,这就是结果。对我来说,他们很奇怪,我无法理解它。我使用谷歌浏览器来存储geensteil,tweakers.nl和stackoverflow(本页),google.com的网页。然后我用chromes inspect-tools检查页面,并使用网络按钮查看我正在加载的内容。然后我复制HTML,我把它放入mysql myisam,我用PHP加载它。我在excel文件中写下了结果。
这些是我的测试结果:
简述:
数据库 - 在服务器和数据库以及脚本之间进行握手需要时间。连接,查询,返回结果,通过脚本将结果呈现到页面。
而
平面文件 - 您正在直接访问该文件,因此它就好像它已经嵌入到页面中一样,唯一的一次是执行代码。
但是,除非你是一个非常慢的,也许是共享服务器,否则你不应该真正注意到它们之间的区别。 Joomla,在我看来是一个相当苛刻的CMS,如果你只是想放几页就不那么好了。如果您正在处理简单的事情,请尝试阅读一些教程并自己编写一个。这应该让你开始
严格考虑两个相同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;
}