Perl Mojolicious渲染大文本文件

时间:2014-04-01 08:31:12

标签: perl mojolicious

我是一个大型日志文件,想要使用Mojolicious在浏览器中打开它。我的客户将点击该链接,我想从服务器读取文件内容并将其返回给用户。我使用以下技巧来解决它:

my $res = `cat $file`;
if (! $res) {
    $self->render(text => "An error while trying to read the log file. \nPlease try to refresh the page.");
}
else {
    $self->render(text => $res);
}

现在 - 我有一个大文件,在阅读时我总是会出现Out of Memory错误。

如何向用户呈现大型文件内容?

我尝试用以下方法解决它:

$self->res->headers->content_type('text/plain');
$self->res->content->asset(Mojo::Asset::File->new(path => file));
$self->rendered(200);

它解决了这个问题,但它需要花费大量时间才能读取文件内容并在浏览器中显示结果。

如何在页面加载时向用户显示文件内容?

感谢。

1 个答案:

答案 0 :(得分:0)

您可能想要调查chunked transfer encoding。以块的形式读取文件并将这些块发送给客户端。