CakephpアプリをWebにデプロイする準備をしています。パフォーマンスを向上させるために、すべてのアセット(img、js、css)をCDNに移動したいと思います。すべてのリンクを変更する代わりに、HTMLヘルパーがアセットにリンクする場所をグローバルに変更する方法はありますか?
5 に答える
最近、このタスクを比較的簡単に実行できるこのクールなヘルパーに出会いました。これはAsset Host Helperと呼ばれ、そのGitHub リポジトリから入手できます。
私が最も気に入ったのは、開発用コピー (ほとんどの場合は localhost 上) または運用用コピー (CDN 上) のアセットの場所を変更することを心配する必要がないことです。ヘルパーが自動的に処理します。
確認してください - これはまさにあなたが探しているツールかもしれません。
乾杯、
m^e
ルートとファイル名が存続する場合は、mod_rewriteの方が苦痛が少ない可能性があります。
RewriteCond %{REQUEST_URI} ^/css/
RewriteRule ^css/(.*)$ http://cd.yourdomain.com/css/$1 [R=301,L]
私は同様の問題を抱えていました、これが私がそれを解決した方法です:
CakePHPのすべてのURLにプレフィックスを追加する
メソッドはあなたAppHelper::url()
が興味を持っているべき場所です。
私には解決策がありますが、それにはコアを変更する必要があります。
ビルドされたプロジェクトがあり、CDN が必要だったので、HTML ヘルパーと Javascript ヘルパーにコードを少し追加して支援しました。
/cake/libs/view/helpers/html.php ファイルの 360 行目にこれを追加します
if (Configure::read('Asset.CDN.enabled')) {
$static_servers = Configure::read('Asset.CDN.static_servers');
if(sizeof($static_servers) > 0) {
shuffle($static_servers);
$url = $static_servers[0].$url;
}
}
/cake/libs/view/helpers/javascript.php の 288 行目
if (Configure::read('Asset.CDN.enabled')) {
$static_servers = Configure::read('Asset.CDN.static_servers');
if(sizeof($static_servers) > 0) {
shuffle($static_servers);
$url = $static_servers[0].$url;
}
}
次に、 app/config.core.php ファイルに次の設定オプションを追加するだけです
// Static File Serving on a CDN
Configure::write('Asset.CDN.enabled', false);
Configure::write('Asset.CDN.static_servers', array('http://static0.yoursite.com.au/', 'http://static1.yoursite.com.au/'));
ページを更新すると、html/javascript ヘルパーを介して出力される各ファイルは、ランダムな静的サーバーを自動的に選択します。
css ファイルで絶対パス (ドメイン名を含む) を使用していない限り、画像が静的サーバーにもあることを確認する必要があることに注意してください。
コアで実際にいじるべきではないことはわかっていますが、時にはそれが本当に簡単な場合もあります。
乾杯、ディーン
これは古い質問であることは知っていますが、将来の人が Rails 3.1 でそれに出くわした場合に備えて、今すぐ使用できます
config.action_controller.asset_host = "ATBTracking"
のconfig/environments/production