从中间件返回html文件的最快方法

时间:2017-04-17 08:35:06

标签: php slim

从缓存中间件我用它来返回一个真正的html文件:

$response->getBody()->write( file_get_contents( $filePath ) );

有更好的方法吗? 我试图直接包含一个文件但苗条期望得到回复。

1 个答案:

答案 0 :(得分:1)

您的解决方案将是最干净的,但有一个更快的解决方案:

readfile($filepath);
exit;

readfile的优点是文件没有加载到内存中,而是直接写入输出缓冲区。此外,我们不需要让苗条继续响应,因此我们exit脚本。

您也可以使用fopen执行此操作并初始化新的Stream,该文件也不应将文件加载到内存中。

$app->add(function ($request, $response, $next) {
    return $response->withBody(new \Slim\Http\Stream(fopen($filePath, 'r')));
});

注意:稍后修剪echo输出缓冲区,因此此选项不如readfile快,但仍然更快作为您的解决方案,因为它只将数据1x加载到内存中。 (在file_get_contents处为1x,在细长响应处理处为1x)