use Mojolicious::Static; my $static = Mojolicious::Static->new; push @{$static->classes}, 'MyApp::Controller::Foo'; push @{$static->paths}, '/home/sri/public';
my $classes = $static->classes; $static = $static->classes(['main']);
Classes to use for finding files in "DATA" sections with Mojo::Loader, first one has the highest precedence, defaults to "main". Only files with exactly one extension will be used, like "index.html". Note that for files to be detected, these classes need to have already been loaded and added before ``warmup'' is called, which usually happens automatically during application startup.
# Add another class with static files in DATA section push @{$static->classes}, 'Mojolicious::Plugin::Fun'; # Add another class with static files in DATA section and higher precedence unshift @{$static->classes}, 'Mojolicious::Plugin::MoreFun';
my $extra = $static->extra; $static = $static->extra({'foo/bar.txt' => '/home/sri/myapp/bar.txt'});
Paths for extra files to be served from locations other than ``paths'', such as the images used by the built-in exception and not found pages. Note that extra files are only served if no better alternative could be found in ``paths'' and ``classes''.
# Remove built-in favicon delete $static->extra->{'favicon.ico'};
my $paths = $static->paths; $static = $static->paths(['/home/sri/public']);
Directories to serve static files from, first one has the highest precedence.
# Add another "public" directory push @{$static->paths}, '/home/sri/public'; # Add another "public" directory with higher precedence unshift @{$static->paths}, '/home/sri/themes/blue/public';
my $bool = $static->dispatch(Mojolicious::Controller->new);
Serve static file for Mojolicious::Controller object.
my $asset = $static->file('images/logo.png'); my $asset = $static->file('../lib/MyApp.pm');
Build Mojo::Asset::File or Mojo::Asset::Memory object for a file, relative to ``paths'' or from ``classes'', or return "undef" if it doesn't exist. Note that this method uses a relative path, but does not protect from traversing to parent directories.
my $content = $static->file('foo/bar.html')->slurp;
my $bool = $static->is_fresh(Mojolicious::Controller->new, {etag => 'abc'});
Check freshness of request by comparing the "If-None-Match" and "If-Modified-Since" request headers to the "ETag" and "Last-Modified" response headers.
These options are currently available:
etag => 'abc'
Add "ETag" header before comparing.
last_modified => $epoch
Add "Last-Modified" header before comparing.
my $bool = $static->serve(Mojolicious::Controller->new, 'images/logo.png'); my $bool = $static->serve(Mojolicious::Controller->new, '../lib/MyApp.pm');
Serve a specific file, relative to ``paths'' or from ``classes''. Note that this method uses a relative path, but does not protect from traversing to parent directories.
$static->serve_asset(Mojolicious::Controller->new, Mojo::Asset::File->new);
Serve a Mojo::Asset::File or Mojo::Asset::Memory object with "Range", "If-Modified-Since" and "If-None-Match" support.
$static->warmup;
Prepare static files from ``classes'' for future use.