Here is a patch to support multiple off-site CDN URLs. This can speed up page loading by tricking the browser to make more requests in parallel. Separate multiple CDN URLs with a comma.
--- ossdl-cdn.php.orig 2011-02-10 23:05:39.000000000 -0500
+++ ossdl-cdn.php 2011-02-10 23:19:02.000000000 -0500
@@ -17,6 +17,7 @@
$ossdl_off_exclude = trim(get_option('ossdl_off_exclude'));
$arr_of_excludes = array_map('trim', explode(',', $ossdl_off_exclude));
+$ossdl_off_cdn_url_arr = preg_split("/[\s,]+/", $ossdl_off_cdn_url);
/**
* Determines whether to exclude a match.
@@ -40,11 +41,16 @@
* Called by #ossdl_off_filter.
*/
function ossdl_off_rewriter($match) {
- global $ossdl_off_blog_url, $ossdl_off_cdn_url, $arr_of_excludes;
+ global $ossdl_off_blog_url, $ossdl_off_cdn_url_arr, $arr_of_excludes;
if (ossdl_off_exclude_match($match[0], $arr_of_excludes)) {
return $match[0];
} else {
- return str_replace($ossdl_off_blog_url, $ossdl_off_cdn_url, $match[0]);
+ list($key, $cdn_url) = each($ossdl_off_cdn_url_arr);
+ if( $cdn_url == FALSE ) {
+ reset($ossdl_off_cdn_url_arr);
+ list($key, $cdn_url) = each($ossdl_off_cdn_url_arr);
+ }
+ return str_replace($ossdl_off_blog_url, $cdn_url, $match[0]);
}
}
@@ -109,14 +115,14 @@
<p>Many WordPress plugins misbehave when linking to their JS or CSS files, and yet there is no filter to let your old posts point to a statics' site or CDN for images.
Therefore this plugin replaces at any links into <code>wp-content</code> and <code>wp-includes</code> directories (except for PHP files) the <code>blog_url</code> by the URL you provide below.
That way you can either copy all the static content to a dedicated host or mirror the files at a CDN by <a href="http://knowledgelayer.softlayer.com/questions/365/How+does+Origin+Pull+work%3F" target="_blank">origin pull</a>.</p>
- <p><strong style="color: red">WARNING:</strong> Test some static urls e.g., <code><?php echo(get_option('ossdl_off_cdn_url') == get_option('siteurl') ? $example_cdn_uri : get_option('ossdl_off_cdn_url')); ?>/wp-includes/js/prototype.js</code> to ensure your CDN service is fully working before saving changes.</p>
+ <p><strong style="color: red">WARNING:</strong> Test some static urls e.g., <code><?php echo(current(preg_split("/[\s,]+/", get_option('ossdl_off_cdn_url')))); ?>/wp-includes/js/prototype.js</code> to ensure your CDN service is fully working before saving changes.</p>
<p><form method="post" action="">
<table class="form-table"><tbod>
<tr valign="top">
<th scope="row"><label for="ossdl_off_cdn_url">off-site URL</label></th>
<td>
<input type="text" name="ossdl_off_cdn_url" value="<?php echo(get_option('ossdl_off_cdn_url')); ?>" size="64" class="regular-text code" />
- <span class="description">The new URL to be used in place of <?php echo(get_option('siteurl')); ?> for rewriting. No trailing <code>/</code> please. E.g. <code><?php echo($example_cdn_uri); ?></code>.</span>
+ <span class="description">The new URL to be used in place of <?php echo(get_option('siteurl')); ?> for rewriting. No trailing <code>/</code> please. E.g. <code><?php echo($example_cdn_uri); ?></code>. Use a comma as a delimiter to round-robin through multiple CDN URLs.</span>
</td>
</tr>
<tr valign="top">