Skip to main content


Project description


This package implements an easy way to configure a CDN to distribute skin elements of your site, thus reducing server accesses and improving response time.

sc.base.cdn as developed initially as a proof of concept and it’s shipped with three different providers:

  • Coral CDN
  • AlternateHostname
  • MultipleHostnames


sc.base.cdn has been tested with:


To use this package, on a buildout based installation:

  1. Edit your buildout.cfg and add sc.base.cdn to the list of eggs to install

    eggs =
  2. Tell the plone.recipe.zope2instance recipe to install a ZCML slug:

    zcml =

If another package depends on the sc.base.cdn egg or includes its zcml directly you do not need to specify anything in the buildout configuration: buildout will detect this automatically.

After updating the configuration you need to run the ‘’bin/buildout’’, which will take care of updating your system.

Go to the ‘Site Setup’ page in the Plone interface and click on the ‘Add/Remove Products’ link.

Choose the product (check its checkbox) and click the ‘Install’ button.

Uninstall – This can be done from the same management screen, but only if you installed it from the quick installer.


This package installs a control panel on your Plone instance. To access it point your browser at http://<address_to_your_plone_site/@@cdn-controlpanel .

The CDN Control Panel allows you to enable/disable the CDN support and also choose which CDN provider you plan to use.


This package is bundled with three very basic CDN providers. Each one of them could be used in production but it’s possible to deploy new ones.


CoralCDN is a decentralized, self-organizing, peer-to-peer web-content distribution network. CoralCDN leverages the aggregate bandwidth of volunteers running the software to absorb and dissipate most of the traffic for web sites using the system. In so doing, CoralCDN replicates content in proportion to the content’s popularity, regardless of the publisher’s resources.[#]_

Our implementation basically appends the sufix to urls generated by resource registries (like portal_javascripts, portal_css, portal_kss).


This provider allows you to designate an alternate hostname to serve skin resources for your portal. A very basic example would be to add as an alternate hostname – using same port number as your zope instance – during development, thus enabling resources to be downloaded from while content will be served from localhost.


Acting in a similar way to AlternateHostname provider, MultipleHostnames allows you to type in multiple values for hostname.

When the absolute_url method from a resource registry is called, we use choice to pick one of the available hostnames and return it to the browser.

Using MultipleHostnames allows you to serve content from a hostname while resources will be called from up to 3 other addresses – one for each registry.


  • Support other CDN providers as Amazon AWS/S3, FTP / SCP servers
  • Select which contents will be distributed by a CDN


  • Erico Andrei (erico at simplesconsultoria dot com dot br) - Coding and Packaging
[1]Extracted from


0.6 (2010-09-02)

  • Initial public release [erico_andrei]

0.5a1 (2010-09-02)

  • Support for MultipleHostnames. [erico_andrei]
  • Support for AlternateHostname. [erico_andrei]
  • Support for CoralCDN. [erico_andrei]
  • Initial release [erico_andrei]

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Files for sc.base.cdn, version 0.6-
Filename, size File type Python version Upload date Hashes
Filename, size (34.2 kB) File type Source Python version None Upload date Hashes View

Supported by

AWS AWS Cloud computing Datadog Datadog Monitoring DigiCert DigiCert EV certificate Facebook / Instagram Facebook / Instagram PSF Sponsor Fastly Fastly CDN Google Google Object Storage and Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Salesforce Salesforce PSF Sponsor Sentry Sentry Error logging StatusPage StatusPage Status page