模块:莫乔利奇::静态
起源:Mojo::基础

名称

Mojolicious::Static-服务静态文件

简介

使用Mojolicious::Static;my$static=Mojolicious::static->new;push@{$static->classes},'MyApp::Controller::Foo';按@{$static->paths},'/home/sri/public';

说明

Mojolicuis::静态是带有的静态文件服务器范围,If-修改自If-无匹配支持,基于副本请求7232副本请求7233.

属性

Mojolicious::静态实现以下属性。

资产目录

我的$dir=$static->asset_dir;$static=$static->asset_dir(“资产”);

用于所有静态资产的子目录,默认为资产.

my$classes=$static->类;$static=$static->类(['main']);

用于查找文件的类数据具有的节Mojo::加载程序,第一个具有最高优先级,默认为主要的。只使用只有一个扩展名的文件,如索引.html。请注意,对于要检测的文件,这些类需要在之前加载并添加“预热”通常在应用程序启动期间自动发生。

#在DATA部分添加另一个具有静态文件的类push@{$static->classes},“Mojolicious::Plugin::Fun”;#在DATA节中添加另一个具有静态文件且优先级更高的类取消移动@{$static->classes},“Mojolicious::Plugin::MoreFun”;

额外的

my$extra=$static->extra;$static=$static->extra({'foo/bar.txt'=>'/home/sri/myapp/bar.txt'});

从其他位置提供额外文件的路径“路径”,例如内置异常和未找到页面使用的图像。请注意,只有在中找不到更好的替代方案时,才会提供额外的文件“路径”“类”.

#删除内置favicon删除$static->extra->{'avicon.ico'};

路径

我的$paths=$static->路径;$static=$static->路径(['/home/sri/public']);

从中为静态文件提供服务的目录,第一个目录具有最高优先级。

#添加另一个“公共”目录按@{$static->paths},'/home/sri/public';#添加另一个优先级更高的“公用”目录取消移动@{$static->paths},'/home/sri/themes/blue/public';

前缀

my$prefix=$static->前缀;$static=$static->前缀('/static');

用于所有静态文件的前缀,默认为未定义。这对于反向代理服务器应接管静态文件服务的生产部署非常有用。

方法

Mojolicious::静态从继承所有方法Mojo::基础并实现了以下新功能。

资产路径

my$path=$static->asset_path('/app.js');

获取静态资产路径。

派遣

my$bool=$static->dispatch(Mojolicious::Controller->new);

为提供静态文件Mojolicious::控制器对象。

文件

my$asset=$static->文件('images/logo.png');my$asset=$static->文件('../lib/MyApp.pm');

生成Mojo::资产::文件Mojo::Asset::Memory(内存)文件的对象,相对于“路径”或来自“类”,或返回未定义如果它不存在的话。请注意,此方法使用相对路径,但不能防止遍历父目录。

my$content=$static->file('foo/bar.html’)->slurp;

文件路径(_P)

my$path=$static->file_path('/index.html');

使用获取静态文件路径“前缀”如果已配置。

刷新(_F)

my$bool=$static->is_fresh(Mojolicious::Controller->new,{etag=>'abc'});我的$bool=$static->is_fresh(Mojolicious::Controller->new,{etag=>'W/“def”'});

通过比较If-无匹配If-修改自请求标头到电子标签上次修改时间响应标头。

这些选项当前可用:

etag(电子标签)
etag=>“abc”etag=>“W/”abc“”

添加电子标签标头,然后进行比较。

上次修改(_M)
last_modified=>$epoch

添加上次修改时间标头,然后进行比较。

服务

my$bool=$static->serve(Mojolicious::Controller->new,'images/logo.png');my$bool=$static->serve(Mojolicious::Controller->new,'../lib/MyApp.pm');

提供特定文件,相对于“路径”或来自“类”。请注意,此方法使用相对路径,但不防止遍历到父目录。

服务资产

$static->serve_asset(Mojolicious::Controller->new,Mojo::asset::File->new);

为…服务Mojo::资产::文件Mojo::Asset::Memory(内存)具有的对象范围,If-修改自If-无匹配支持。

热身

$static->warmup();

从准备静态文件“类”以及供未来使用的静态资产。

另请参阅

莫乔利奇,Mojolicious::指南,https://mojolicious.org.