Связывание с активами на cdn с cakephp - PullRequest
2 голосов
/ 18 февраля 2010

Я готовлюсь к развертыванию приложения CakePHP в сети и хочу переместить все активы (img, js, css) в CDN для повышения производительности. Есть ли способ глобально изменить местоположение, на которое HTML-помощник ссылается на ресурсы, вместо того, чтобы менять каждую ссылку.

Ответы [ 5 ]

2 голосов
/ 14 мая 2011

Недавно я наткнулся на этого замечательного помощника, который выполняет эту задачу с относительной легкостью.Он называется Помощник хоста активов и может быть получен из его репозитория GitHub .

Что мне больше всего понравилось в этомзаключается в том, что вам не нужно беспокоиться об изменении расположения активов в вашей копии разработки (скорее всего, на локальном хосте) или в рабочей копии (в CDN).Помощник позаботится об этом автоматически.

Проверьте это - это может быть просто инструмент, который вы ищете.

Приветствия,
m ^ e

1 голос
/ 18 февраля 2010

Если маршруты и имена файлов сохраняются, возможно, mod_rewrite будет менее болезненным.

RewriteCond %{REQUEST_URI} ^/css/
RewriteRule ^css/(.*)$ http://cd.yourdomain.com/css/$1 [R=301,L]
1 голос
/ 18 февраля 2010

У меня была похожая проблема, вот как я ее решил:
Добавление префикса к каждому URL в CakePHP

Метод AppHelper::url() - это то место, которое вас должно заинтересовать.

0 голосов
/ 08 октября 2011

Я знаю, что это старый вопрос, но в случае, если какие-то будущие люди наткнутся на него в рельсах 3.1, теперь вы можете использовать

config.action_controller.asset_host = "ATBTracking"

в config/environments/production

0 голосов
/ 18 февраля 2010

У меня есть решение, но оно включает изменение ядра, я знаю, что знаю ... Я уже ударил себя за это; -)

У нас был проект, который был построен, а затем нам понадобился 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, вам необходимо убедиться, что изображения также находятся на статическом сервере.

Я знаю, что вам не стоит поиграть в ядре, но иногда это действительно просто проще.

Ура, Декан

...