加载只在一个主题模板中使用的PHP函数的最快方法是什么?

时间:2018-10-04 作者:Linda Paiste

我已经为我的网站开发了很多PHP代码片段,我不确定为了减少网站加载时间,把它们放在哪里最合适。

如果它们进入函数。php或专用插件,然后默认情况下,它们将加载到站点的每个页面,而不仅仅是需要它们的页面。这是否会对加载时间产生有意义的影响,或者如果从未实际调用函数,这是否无关紧要?

似乎使用条件like更好一步if(is_page_template()) { include_once(\'this-function.php\'); } 并且只在实际使用它们的页面上加载函数。

我还可以从模板文件本身的代码中包含一个外部php文件,甚至可以直接在模板中包含函数。这两种方法看起来都很马虎,但速度快吗?

将所有内容封装在类中而不是使用命名函数的最佳方法是什么?

2 个回复
SO网友:Mark Kaplun

如果您使用PHP 7.0+将所有文件都保存在内存中编译(不是百分之百准确,而是足够好的抽象),那么这不是问题,而且由于所有其他PHP版本都不受支持,或者非常接近其使用寿命,如果您没有使用PHP 7.0+版本,则应该升级到7.0+版本。

无论如何,从性能角度来看,PHP执行很少是瓶颈,DB访问通常是瓶颈。与在页面生成过程中节省一微秒相比,更重要的是以更易于理解和维护的方式编写代码。

如果你自己没有强烈的观点,就试着遵循核心主题的结构。他们不一定有最好的结构,但更多的人熟悉他们,更容易获得相关的帮助,无论是作为建议,还是作为帮助编写主题的人。

SO网友:Mike

我会将代码封装在类中,然后仅当代码调用类时,才使用自动加载加载这些类。

以下是一个示例:

// register my autoload function
spl_autoload_register(\'my_wp_autoload\');

/**
 * This function is called every time PHP tries to instanciate an undefined class
 */
function my_wp_autoload( $class ) {
    // build the path of the file that holds your class definition
    $filename = dirname( __FILE__ ) . \'/include/classes/\' . strtolower( $class );

    // if the file exists, include it
    if( file_exists( $filename ) ) {
        include_once( $filename );
    }
}
这背后的想法是,当您在PHP代码中调用未定义的类时,解析器将首先执行自动加载函数,然后引发异常。这是您最后一次更改,以包含定义类的文件。

结束