【发布时间】:2012-10-24 20:21:16
【问题描述】:
抱歉标题不详,不知道该取什么标题 :-)
我编写了一个 API,可以从我的服务器上的目录加载所需的 javascript 库。目录有特定的格式,唯一不同的是每个库目录中的文件名格式。
目录格式
_js/_source/_library_name_here/file_name_here.js
例如
/_js/_source/_fancybox/jQuery.lightbox-0.5.js
数组(当前是硬编码的)
目前,我将单独的库存储在一个数组(硬编码)中,如下所示:
$js_libraries = array(
'fancybox' => '/_js/_source/_fancybox/jQuery.lightbox-0.5.js',
'something_else' => '/_js/_source/_something_else/jQuery.something.js'
);
潜在的选择
如果$js_libraries 数组是通过扫描“_source”目录并像这样填充数组而自动构建的,则此 API 将更加动态。我会用类似的东西(未经测试,只是一个例子!):
function gather_files($directory){
$files_and_folders = scandir($directory);
foreach($files_and_folders as $value){
if($value != '.' && $value != '..'){
if(is_dir($directory.'/'.$value)){
listFolderFiles($dir.'/'.$ff);
}
}
}
}
$js_libraries = gather_files(dirname(__FILE__));
以上没有说完,只是想演示一下我的意思是根据目录的内容自动构建数组
我的问题
很简单,这个 API 的关键是速度,因为它会将打包/缩小(通过 PHP 即时)的 javascript 文件返回到 HTML 页面,因此不会有任何延迟,因为这会延迟页面的启动。 我想知道的是,当这个目录下有很多库时,自动方法会不会明显变慢?我应该坚持使用硬编码数组吗?
【问题讨论】:
-
你看过glob()函数吗?
-
是的,当然,我收集文件的方式不是很相关,事实上我编写的代码很糟糕。我最有可能使用
glob()函数。我只是想知道它是否会明显变慢:-) -
只有确定速度的方法,对其进行基准测试。
-
你为什么不试试看呢?
-
过早的优化是万恶之源。如果您稍后需要性能提升,请将您从
glob()获得的数组转储到文件并从那里读取。
标签: php arrays api directory scandir