Dynamic CDN for front-end assets.

Installs: 11

Dependents: 0

Suggesters: 0

Security: 0

Stars: 36

Watchers: 4

Forks: 13

Open Issues: 2


0.4.0 2017-06-20 19:38 UTC

This package is auto-updated.

Last update: 2024-05-29 03:44:42 UTC


Contributors: ericmann, 10up
Donate link: Tags: CDN, images, performance
Requires at least: 3.8.1
Tested up to: 4.5.2
Stable tag: 0.4.0
License: GPLv2 or later
License URI:

Dynamic CDN for front-end assets.


Dynamic solution for rewriting image asset URLs to a hosted content delivery network (CDN) with optional domain sharding for concurrent downloads.

This plugin is based heavily on the CDN dropin from Mark Jaquith's WP_Stack (


Manual Installation

  1. Upload the entire /dynamic-cdn directory to the /wp-content/plugins/ directory.
  2. Activate Dynamic CDN through the 'Plugins' menu in WordPress.

Frequently Asked Questions

Will this work as a mu-plugin?

Yes. The plugin, as designed, will work just fine in the mu-plugins directory. We highly recommend a second mu-plugin be added to configure the CDN domains used by the system.

How do I add a domain?

In a function wired to dynamic_cdn_first_loaded, you'll reference the ->add_domain() method of the Dynamic_CDN object. For example:

function my_cdn_domains() {
    $manager = DomainManager::last();
    $manager->add( '' );
    $manager->add( '' );
    $manager->add( '' );
add_action( 'dynamic_cdn_first_loaded', 'my_cdn_domains' );

What if I want to add my domains through wp-config.php?

Simply define a DYNCDN_DOMAINS constant that's a comma-delimited list of your cdn domains. For example:

define( 'DYNCDN_DOMAINS', ',,' );

What if I don't add any domains, will this break my images?

Hopefully not. If you haven't added any domains the plugin will not rewrite anything, bypassing your images entirely.


None at this time.



  • New: Unit tests for core functionality
  • Fix: Ensure srcsets don't filter in admin views


  • New: Add support for WordPress 4.4 srcsets


  • New: CDN domains can be added with a constant.
  • Fix: Make domain mapping multisite aware. props @trepmal


  • First release

Upgrade Notice


Domain management has moved from a general-purpose class to a purpose-built DomainManager object. This object is instantiated with your current site's domain name, and can be accessed throught the static DomainManager::last() helper. (This method automatically returns the last-instantiated domain manager). If you weren't manipulating CdN domains programmatically, you won't need to change anything at all.


First Release