Goo*_*bot 13 php filesystems file include
使用include
文件很常见.我认为在不考虑性能的情况下保持代码整洁是过度使用的.对于几个include
s,磁盘应该读取文件,因为我们极其使用磁盘,它可能是一个缓慢的过程.但是,这不是主要的慢速过程或速率限制过程,因为加载文件的file_get_contents
速度要快几倍.
我认为这是主要网站将javascripts放在html文件中而不是按文件加载的原因.或者,将大型JS文件拆分为几个小型JS文件可能是个好主意,因为并行的http请求可以更快地加载整个JS代码.但这与php文件不同,因为php脚本include
在此过程中逐个读取文件.
请评论这个问题有多严重?想象一下,网页是在0.60秒内加载的,include
10个php文件可以将它变成0.70秒?
虽然这种影响可以忽略不计,但我想知道是否有办法加快这一过程.我不是说像PHP缓存一样APC
.
PS这个问题不是实际应用(典型案例),而是一般的理论考虑.
Exp*_*lls 16
include
和它的同类是必需品.它类似于import
Java和python,因为它用于类和函数定义. include
应该是非常快,但使用它将延迟脚本执行相比,如果它不存在. include
完全不同于file_get_contents()
.后者是一个函数而不是一个构造并返回一个字符串. include
实际上将执行包含文件的代码.
关于拆分JS文件的说法不正确,因为脚本从同一个域块下载并行下载,并且通常建议尽可能少地包含这些文件.
我非常怀疑拥有多个include
s,假设一切都是必要的,将会降低页面的性能.如果您遇到性能问题,请查看其他地方.
如果你想加速php,请考虑使用php编译器.
考虑一下:
(index.php)
for ($i=0; $i<100000; $i++) {
include('somefile.php');
}
(somefile.php)
<?php
// nothing here
Run Code Online (Sandbox Code Playgroud)
index.php需要~115秒(对我来说)处理100,000次迭代,同时包括somefile.php,即使somefile.php中没有任何内容.
然而:
(index.php)
for ($i=0; $i<100000; $i++) {
// no file included this time
}
Run Code Online (Sandbox Code Playgroud)
如果没有include()结构,index.php现在需要0.002秒才能完成.
(index.php)
for ($i=0; $i<100000; $i++) {
echo $i .'<br/>';
}
Run Code Online (Sandbox Code Playgroud)
index.php需要0.02秒才能回复$ i的100,000次迭代.
当然,由于迭代次数很多,这是一个非常极端的例子,但它确实表明,通过简单地包含一个include构造,脚本执行时间可以按指数方式延迟.下次编写具有大量迭代的进程时,请考虑这一点,即.读/写大型XML文件等.最好保持代码内联,即使这意味着它不那么"易于管理".因为只是通过包含一个include(),你不仅要在大约100,000次迭代中为脚本执行时间添加~115秒(~2分钟),还要考虑是否include()(somefile.php)有自己的进程执行.我的例子只是添加一个include()构造..包含的文件什么都没有.
现在,包括文件在这里和那里的文件,时间可以忽略不计.我只是指出include()结构确实需要额外的处理,无论其内容如何.
归档时间: |
|
查看次数: |
7724 次 |
最近记录: |