Mojolicious::Plugin::Gzip - Plugin to Gzip Mojolicious responses



      # Mojolicious::Lite
      plugin 'Gzip';
      # With minimum size in bytes required before gzipping. Default is 860.
      plugin Gzip => {min_size => 1500};
      # Mojolicious
      # With minimum size in bytes required before gzipping. Default is 860.
      $app->plugin(Gzip => {min_size => 1500});


    This module can be inefficient for large static files. It loads the
    entire file into memory and then gzips it, resulting in both the
    original file and the gzipped one in memory at once. By default,
    Mojolicious serves static files from disk, which is much more memory
    efficient. For static files, you may want to compress them ahead of
    time and use something like Mojolicious::Static::Role::Compressed to
    serve them, or a service like Cloudlfare <>,
    which will compress files for you. For gzipping dynamic content, you
    should consider using "compress" in Mojolicious::Renderer instead.


    Mojolicious::Plugin::Gzip gzips all responses equal to or greater than
    a "min_size" by using the "after_dispatch" in Mojolicious hook.
    Mojolicious::Plugin::Gzip will only gzip a response if all of these
    conditions are met:

      * The "accept_encoding" in Mojo::Headers header contains 'gzip'.

      * The "body_size" in Mojo::Content of the response is greater than or
      equal to "min_size".

      * The "code" in Mojo::Message::Response is 200.

      * The "content_encoding" in Mojo::Headers for the response is not

    Mojolicious::Plugin::Gzip will do these things if those conditions are

      * Set "body" in Mojo::Message to the gzipped version of the previous
      "body" in Mojo::Message.

      * Set "body_size" in Mojo::Message to the size of the gzipped

      * Set "content_encoding" in Mojo::Headers to "gzip".

      * If "etag" in Mojo::Headers was set, append "-gzip" to the existing
      "etag" in Mojo::Headers. This is done according to RFC-7232
      <>, which states
      that ETags should be content-coding aware.

      * Use "append" in Mojo::Headers to append "Accept-Encoding" to the
      "vary" in Mojo::Headers header.



      # Mojolicious::Lite
      plugin 'Gzip' => {min_size => 1500};
      # Mojolicious
      $app->plugin(Gzip => {min_size => 1500});

    Sets the minimum "body_size" in Mojo::Content required before response
    content will be gzipped. If the "body_size" in Mojo::Content is greater
    than or equal to "min_size", then it will be gzipped. Default is 860.


    Adam Hopkins <>


    Copyright 2019- Adam Hopkins


    This library is free software; you can redistribute it and/or modify it
    under the same terms as Perl itself.


      * MojoX::Encode::Gzip

      * Mojolicious