我正在尝试从CDN而不是/static文件夹中提供所有静态文件(js、css、图像)。我开始编写自己的sub来重写图像URL:
sub uri_for_image {
my ( $c, $path, @args ) = @_;
my $uri = $c->uri_for($path, @args);
if (MyApp->config->{use_cdn}) {
my $cdn = MyApp->config->{cdn_location};
$uri = $path;
$uri =~ s/^/$cdn/si;
}
return $uri;
}但后来我意识到要让所有的静态文件自动重路由需要更多的工作。如何为静态文件设置CDN url?
我正在研究配置Static::Simple,但它似乎只有本地文件位置的设置。
发布于 2012-02-13 20:13:07
您认为Catalyst实际上可以并且应该在这里为您做些什么?
我担心如果你想在应用程序之外生成你自己的链接,那么你基本上只能靠自己了- Catalyst在这里并没有什么真正能做或提供的东西来帮助你,不是吗?
或者你只是想让uri_for粉碎从/static开始的所有路径来指向你的CDN?就像你可以包装uri_for并让它做到这一点吗?
我认为你的版本(有一个单独的方法)更干净,更整洁,但如果你所有的静态内容都放到CDN上,那么给uri_for你想要的行为是合理的。
发布于 2018-02-17 14:16:02
2013年晚些时候,有人为此编写了Catalyst::Plugin::ExternalURI。
从概要部分:
使用Catalyst qw/ ...静态... ExternalURI;__/__-->http://static.mydomain.com‘( externaluri /#将/ => /css形式的urls转换为另一个域名{ '^/static’=> 'http://static.mydomain.com‘},... { ' match’=> ' rewrite‘}或{match’=>‘^/ =>’rewrite=>‘},);
https://stackoverflow.com/questions/9255798
复制相似问题