CakePHP 2.x CDN/Clould Front helper (domain sharding)
Inspired by: Teknoid's cakephp asset host helper
This helper split web page resources across multiple domains (to make pages load faster).
Clone/Copy the files in this directory into
Then make sure you load the plugin:
// in app/Config/bootstrap.php CakePlugin::load('AssetHost');
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' ) );
` - 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) `
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.