大佬教程收集整理的这篇文章主要介绍了perl – 如何为所有传入的URL创建公共处理程序?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
对于所有传入的URL,如果缓存周期没有到期,我需要从缓存返回一些结果.
这种逻辑对所有URL都是通用的.
题:
如何在Mojolicious :: Lite中为所有传入的URL实现一些通用逻辑?
我试着这样做
any '/:bar' => [bar => qr/.+/] => sub { # ... # Return JSON object immediately from cache if it is applicable # ... }@H_618_13@但是这会导致非常长的页面加载和
Template "bar.html.ep" not found@H_618_13@在morbo日志中(但是经过很长时间的延迟后,最终会执行“/ target”处理程序).
我是Mojo的完美新手,所以任何帮助都将受到赞赏
谢谢!
use Mojolicious::Lite; our %CACHE; any '/:any' => sub { my $self = shift; my $param = $self->param('any'); my $result = { reqtime => time,param => $param,number => rand }; my $path = $self->req->url->path->to_String; $CACHE{$path} //= $result; $self->render( json => $result ); }; app->hook( before_dispatch => sub { my $c = shift; my $path = $c->req->url->path->to_String; if (defined($CACHE{$path})) { $c->render( json => $CACHE{$path},status => 200 ); } } ); app->secrets([42])->start;@H_618_13@样品运行:
$morbo cachedemo.pl >/dev/null 2>&1 & $for req in foo foo1 foo2 foo3 foo foo1 > do curl http://localhost:3000/$req ; echo ; sleep 1 ; done {"number":0.848003210075227,"reqtime":1444254617,"param":"foo"} {"number":0.0745738560703799,"reqtime":1444254618,"param":"foo1"} {"number":0.484934245556467,"reqtime":1444254619,"param":"foo2"} {"number":0.181112856445004,"reqtime":1444254620,"param":"foo3"} {"number":0.848003210075227,"param":"foo"} <-- dup {"number":0.0745738560703799,"param":"foo1"} <-- dup@H_618_13@
以上是大佬教程为你收集整理的perl – 如何为所有传入的URL创建公共处理程序?全部内容,希望文章能够帮你解决perl – 如何为所有传入的URL创建公共处理程序?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。