代码之家  ›  专栏  ›  技术社区  ›  Shard Brian Ellis

使用cakephp链接到cdn上的资产

  •  2
  • Shard Brian Ellis  · 技术社区  · 16 年前

    我准备将cakephp应用程序部署到web上,我想将所有资产(img、js、css)移动到CDN以提高性能。有没有一种方法可以全局更改HTML助手链接到资产的位置,而不必更改每个链接。

    5 回复  |  直到 16 年前
        1
  •  2
  •   miCRoSCoPiC_eaRthLinG    15 年前

    最近我遇到了一个很酷的助手,他可以相对轻松地完成这个任务。它叫 Asset Host Helper 可以从它的 GitHub repository .

    我最喜欢的是,您不必担心更改开发副本(最可能在localhost上)或生产副本(在CDN上)中资产的位置。助手会自动处理它。

    看看-这可能就是你要找的工具。

    干杯,
    m^e公司

        2
  •  1
  •   metrobalderas    16 年前

    如果路由和文件名仍然存在,那么modïu重写可能不会那么痛苦。

    RewriteCond %{REQUEST_URI} ^/css/
    RewriteRule ^css/(.*)$ http://cd.yourdomain.com/css/$1 [R=301,L]
    
        3
  •  1
  •   Community Mohan Dere    9 年前
        4
  •  0
  •   Dean    16 年前

    我有一个解决方案,但它涉及到改变核心,我知道我知道…我已经打了自己做;-)

    在/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;
        }
    }
    

    和in/cake/libs/view/helpers/javascript.php文件去288号线

    $static\u servers=配置::读取('Asset.CDN.static\u服务器');
    
    if(sizeof($static\u servers)>0){
    洗牌($静态服务器);
    }
    }
    

    然后在你的应用程序中/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文件中使用绝对路径(包括域名),否则您需要确保图像也在静态服务器上。

    我知道你不应该在核心区玩,但有时候真的很简单。

    干杯, 院长

        5
  •  -1
  •   Matthew    14 年前

    我知道这是一个老问题,但如果将来有人在Rails3.1中偶然发现它,您现在可以使用它了

    config.action_controller.asset_host = "ATBTracking"
    

    在里面 config/environments/production