2012-02-13 11 views
1

静的ファイル(js、css、images)を/ staticフォルダではなくCDNから提供しようとしています。私は、画像のURLを書き換えるために自分のサブを書き始め:Catalystを搭載したCDNから静的ファイルを配信する

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を設定しようとしていましたが、ファイルの場所をローカルに設定するだけのようです。

答えて

1

Catalystは実際にあなたのために何ができるのでしょうか?

アプリの外にある独自のリンクを生成したいのであれば、私は恐れています。あなた自身がかなり自分のものです。—ここにはCatalystが本当にやることができますか? ?

uri_forは、/staticから始まるすべてのパスをCDNをポイントするようにしたいですか?あなたはちょうどuri_forをラップして、それをすることができますか?

私はあなたのバージョン(別の方法を持っている)はより清潔できれいだと思っていますが、あなたの静的なコンテンツがすべてCDNに行くならば、ちょうどuri_forにふさわしい振る舞いを与えてください。

+0

は、私は、configファイルにCDNを定義することができますする方法でしたし、それだけで動作します。うん、私はuri_for_staticメソッドを実装しました。ありがとう! –

0

2013年後半に誰かがこの目的でCatalyst::Plugin::ExternalURIを書きました。概要セクションから

:私はそこに期待していた

use Catalyst qw/ ... ExternalURI ... /; 

__PACKAGE__->config(
    externaluri => [ 
     # Converts urls with the form of /static/css to start with another domain name 
     { '^/static' => 'http://static.mydomain.com' }, 
     ... 
     { 'MATCH' => 'REWRITE' } 
     or 
     { match => '^/static', rewrite => 'http://static.mydomain.com' }, 
    ] 
); 
関連する問題