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;
my$path=$static->file_path('/index.html');
使用获取静态文件路径“前缀”如果已配置。
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.