Add in WithoutCache plugin

This commit is contained in:
Brian Read 2024-09-05 11:57:23 +01:00
parent b9f6392c1d
commit 127ea74a8b
4 changed files with 174 additions and 1 deletions

View File

@ -25,6 +25,7 @@ use SrvMngr::Plugin::I18N;
use SrvMngr::I18N; use SrvMngr::I18N;
use SrvMngr::Model::Main; use SrvMngr::Model::Main;
use SrvMngr::Plugin::WithoutCache;
our $VERSION = '1.420'; our $VERSION = '1.420';
$VERSION = eval $VERSION; $VERSION = eval $VERSION;
@ -210,6 +211,8 @@ sub setup_plugins {
$self->plugin('TagHelpers'); $self->plugin('TagHelpers');
$self->plugin('RenderFile'); $self->plugin('RenderFile');
$self->plugin('SrvMngr::Plugin::WithoutCache');
# CSRF protection if production mode # CSRF protection if production mode
# $self->plugin('Mojolicious::Plugin::CSRFDefender' => { # $self->plugin('Mojolicious::Plugin::CSRFDefender' => {

View File

@ -0,0 +1,73 @@
package SrvMngr::Plugin::Cache;
use Mojo::Base -base;
=head1 NAME
Mojolicious::Plugin::Renderer::WithoutCache::Cache - Mojo::Cache that doesn't cache
=head1 VERSION
Version 0.04
=cut
our $VERSION = '0.04';
$VERSION = eval $VERSION;
=head1 SYNOPSIS
You probably don't want to use this directly.
my $cache = Mojolicious::Plugin::Renderer::WithoutCache::Cache->new;
# this cache does nothing
=head1 DESCRIPTION
A cache object that's compatible to Mojo::Cache but does nothing. It does
not save or return any values. It's always empty.
=head1 METHODS
=head2 get
Does nothing. Returns C<undef>.
=cut
sub get {}
=head2 set
Does nothing. Returns C<$self> so chaining is possible.
=cut
sub set { shift; }
=head2 max_keys
Always returns zero. Can't be set. We don't want any keys.
=cut
sub max_keys { 0 }
=head1 AUTHOR
simbabque, C<< <simbabque at cpan.org> >>
=head1 BUGS
Please report any bugs or feature requests through an issue
on github at L<https://github.com/simbabque/Mojolicious-Plugin-Renderer-WithoutCache/issues>.
=head1 LICENSE
Copyright (C) simbabque.
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
=cut
1;

View File

@ -0,0 +1,94 @@
package SrvMngr::Plugin::WithoutCache;
use Mojo::Base 'Mojolicious::Plugin';
use SrvMngr::Plugin::Cache;
=head1 NAME
Mojolicious::Plugin::Renderer::WithoutCache - Disable the template cache in your Mojo app
=begin html
<p>
<a href="https://travis-ci.org/simbabque/Mojolicious-Plugin-Renderer-WithoutCache"><img src="https://travis-ci.org/simbabque/Mojolicious-Plugin-Renderer-WithoutCache.svg?branch=master"></a>
<a href='https://coveralls.io/github/simbabque/Mojolicious-Plugin-Renderer-WithoutCache?branch=master'><img src='https://coveralls.io/repos/github/simbabque/Mojolicious-Plugin-Renderer-WithoutCache/badge.svg?branch=master' alt='Coverage Status' /></a>
</p>
=end html
=head1 VERSION
Version 0.04
=cut
our $VERSION = '0.04';
$VERSION = eval $VERSION;
=head1 SYNOPSIS
This plugin turns off the renderer's cache in L<Mojolicious> and L<Mojo::Lite> applications.
use Mojolicious::Lite;
plugin 'Renderer::WithoutCache';
=head1 DESCRIPTION
This does what it says on the box. It turns off caching for the L<Mojolicious::Renderer>
or any other renderer that's inside C<$app-E<gt>renderer> by injecting a cache object that
does not do anything. This is superior to setting the C<max_keys> of L<Mojo::Cache>
to C<0> if you plan to do a lot of uncached requests, because L<Mojolicious::Renderer>
will still try to cache, and every time L<Mojo::Cache> sets a value in the cache it
looks at the C<max_keys>, and then stops.
Doing nothing at all is cheaper. But not a lot really.
=head1 METHODS
=head2 register
Register the plugin in a L<Mojolicious> application.
$plugin->register(Mojolicious->new);
=cut
sub register {
my ( $self, $app ) = @_;
$app->renderer->cache( SrvMngr::Plugin::Cache->new );
}
=head1 AUTHOR
simbabque, C<< <simbabque at cpan.org> >>
=head1 BUGS
Please report any bugs or feature requests through an issue
on github at L<https://github.com/simbabque/Mojolicious-Plugin-Renderer-WithoutCache/issues>.
=head1 SUPPORT
You can find documentation for this module with the perldoc command.
perldoc Mojolicious::Plugin::Renderer::WithoutCache
=head2 Why would I want to turn off the cache?
I don't know.
=head1 ACKNOWLEDGEMENTS
This plugin was inspired by Tom Hunt asking about turning the cache off
on L<Stack Overflow|http://stackoverflow.com/q/41750243/1331451>.
=head1 LICENSE
Copyright (C) simbabque.
This library is free software; you can redistribute it and/or modify
it under the same terms as Perl itself.
=cut
1;

View File

@ -2,7 +2,7 @@ Summary: Sme server navigation module : manager 2
%define name smeserver-manager %define name smeserver-manager
Name: %{name} Name: %{name}
%define version 11.0.0 %define version 11.0.0
%define release 18 %define release 19
Version: %{version} Version: %{version}
Release: %{release}%{?dist} Release: %{release}%{?dist}
License: GPL License: GPL
@ -108,6 +108,9 @@ true
%defattr(-,root,root) %defattr(-,root,root)
%changelog %changelog
* Thu Sep 05 2024 Brian Read <brianr@koozali.org> 11.0.0-19.sme
- Add in mojo plugin WithoutCache [SME: 12695]
* Sun Aug 25 2024 Brian Read <brianr@koozali.org> 11.0.0-18.sme * Sun Aug 25 2024 Brian Read <brianr@koozali.org> 11.0.0-18.sme
- Move flag to emojii from downloaded jpg. Fix singleton locale issue[SME: 12706] - Move flag to emojii from downloaded jpg. Fix singleton locale issue[SME: 12706]