GSP
Quick Navigator

Search Site

Unix VPS
A - Starter
B - Basic
C - Preferred
D - Commercial
MPS - Dedicated
Previous VPSs
* Sign Up! *

Support
Contact Us
Online Help
Handbooks
Domain Status
Man Pages

FAQ
Virtual Servers
Pricing
Billing
Technical

Network
Facilities
Connectivity
Topology Map

Miscellaneous
Server Agreement
Year 2038
Credits
 

USA Flag

 

 

Man Pages
Mojolicious::Static(3) User Contributed Perl Documentation Mojolicious::Static(3)

Mojolicious::Static - Serve static files

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

Mojolicious::Static is a static file server with "Range", "If-Modified-Since" and "If-None-Match" support, based on RFC 7232 <https://tools.ietf.org/html/rfc7232> and RFC 7233 <https://tools.ietf.org/html/rfc7233>.

Mojolicious::Static implements the following attributes.

  my $dir = $static->asset_dir;
  $static = $static->asset_dir('assets');

Subdirectory used for all static assets, defaults to "assets".

  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 $prefix = $static->prefix;
  $static    = $static->prefix('/static');

Prefix to use for all static files, defaults to "undef". This can be very useful for production deployments where the reverse proxy server should take over serving static files.

Mojolicious::Static inherits all methods from Mojo::Base and implements the following new ones.

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

Get static asset path.

  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 $path = $static->file_path('/index.html');

Get static file path with "prefix" if it has been configured.

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

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'
  etag => 'W/"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" and static assets for future use.

Mojolicious, Mojolicious::Guides, <https://mojolicious.org>.

2023-09-20 perl v5.40.2

Search for    or go to Top of page |  Section 3 |  Main Index

Powered by GSP Visit the GSP FreeBSD Man Page Interface.
Output converted with ManDoc.