This helper split web page resources across multiple domains (to make pages load faster).
PHP
Pull request Compare This branch is 21 commits ahead of vlad-ko:master.
Fetching latest commit…
Cannot retrieve the latest commit at this time.
Permalink
Failed to load latest commit information.
View/Helper
README.md

README.md

CakePHP 2.x CDN/Clould Front helper (domain sharding)

Inspired by: Teknoid's cakephp asset host helper

Background

This helper split web page resources across multiple domains (to make pages load faster).

Installation

Clone/Copy the files in this directory into app/Plugin/AssetHost.

Then make sure you load the plugin:

// in app/Config/bootstrap.php
CakePlugin::load('AssetHost');

Configuration

Load the helper in your Controller:

public $helpers = array(
    'AssetHostHelper.Cf' => array(
        'assetHost' => 's%d.example.com',
        'numHostsMin' => 0,
        'numHostsMax' => 2,
        'sslHost' => 'www.example.com'
    )
);

Options

`
- assetHost :

    Where are the assets hosted?
    Possible options: 'assets.example.com', if you only have one host
    Or: 'assets%d.example.com', if you have multiple hosts. %d gets replaced with host number

- numHostsMin & numHostsMax

    If above is 'assets%d.example.com' will generate host names from 0 - 3
    i.e. assets0.example.com

- sslHost

    Serving assets via SSL is slow, let's use a unique host (for better caching)

- imgDir

    Where are the images relative to web root (local should mirror remote)
    Try to stick to cake conventions.

- jsDir
    Where are the JS files relative to web root (local should mirror remote)
    Try to stick to cake conventions.

- cssDir
    Where are the CSS files relative to web root (local should mirror remote)
    Try to stick to cake conventions.

- assetDir

    Will set asset directory depending on the asset type (css, js, img)

- forceTimestamp

    We should really force the timestamp to improve caching.
    Trun on the option in core.php

- remoteCompressedFiles

    If Cloudfront origin is S3 then we can supply the user
    with compressed files if we add them to S3 first and then
    change the file that is requested.
    To make this work we need a gzip version of each css and
    js file in the format cake.gz.css.
    If this is turned on the app will check that the agent
    accepts gzip encoded files and will server the gz version
    instead.
    This feature is not required if the origin of cloudfront
    is your website.

    Thx to redthor ! (https://github.com/redthor)
`

Usage

Use it in your views like Html Helper, ex :

echo $this->Cf->image('logo.png', array(
        'width'=> '150',
        'height'=> '50',
        'alt'=> 'alternative text',
        'url' => array(
            'controller' => 'examples',
            'action' => 'index',
        )
    )
);

All options are same as default CakePHP helpers.