diff --git a/conf/dokuwiki.php b/conf/dokuwiki.php
index e90e4fc23fcde20f8063154520947de2ee0f9a9d..5e185e9c21149fa2bbd30a94369b6008a870be51 100644
--- a/conf/dokuwiki.php
+++ b/conf/dokuwiki.php
@@ -108,6 +108,7 @@ $conf['subscribers'] = 0;                //enable change notice subscription sup
 $conf['subscribe_time'] = 24*60*60;      //Time after which digests / lists are sent (in sec, default 1 day)
                                          //Should be smaller than the time specified in recent_days
 $conf['compress']    = 1;                //Strip whitespaces and comments from Styles and JavaScript? 1|0
+$conf['cssdatauri']  = 0;                //Maximum byte size of small images to embed into CSS, won't work on IE<8
 $conf['hidepages']   = '';               //Regexp for pages to be skipped from RSS, Search and Recent Changes
 $conf['send404']     = 0;                //Send a HTTP 404 status for non existing pages?
 $conf['sitemap']     = 0;                //Create a google sitemap? How often? In days.
diff --git a/lib/exe/css.php b/lib/exe/css.php
index 03fe6ad907481fe9d2176eaa5cc22f9f22702ab7..8f86f2433d463f4b5e9b484b7a6a14cd4d6042ea 100644
--- a/lib/exe/css.php
+++ b/lib/exe/css.php
@@ -123,6 +123,12 @@ function css_out(){
         $css = css_compress($css);
     }
 
+    // embed small images right into the stylesheet
+    if($conf['cssdatauri']){
+        $base = preg_quote(DOKU_BASE,'#');
+        $css = preg_replace_callback('#(url\([ \'"]*)('.$base.')(.*?(?:\.(png|gif)))#i','css_datauri',$css);
+    }
+
     http_cached_finish($cache->cache, $css);
 }
 
@@ -221,11 +227,38 @@ function css_loadfile($file,$location=''){
     $css = io_readFile($file);
     if(!$location) return $css;
 
-    $css = preg_replace('#(url\([ \'"]*)(?!/|http://|https://| |\'|")#','\\1'.$location,$css);
-    $css = preg_replace('#(@import\s+[\'"])(?!/|http://|https://)#', '\\1'.$location, $css);
+    $css = preg_replace('#(url\([ \'"]*)(?!/|data:|http://|https://| |\'|")#','\\1'.$location,$css);
+    $css = preg_replace('#(@import\s+[\'"])(?!/|data:|http://|https://)#', '\\1'.$location, $css);
+
     return $css;
 }
 
+/**
+ * Converte local image URLs to data URLs if the filesize is small
+ *
+ * Callback for preg_replace_callback
+ */
+function css_datauri($match){
+    global $conf;
+
+    $pre   = unslash($match[1]);
+    $base  = unslash($match[2]);
+    $url   = unslash($match[3]);
+    $ext   = unslash($match[4]);
+
+    $local = DOKU_INC.$url;
+    $size  = @filesize($local);
+    if($size && $size < $conf['cssdatauri']){
+        $data = base64_encode(file_get_contents($local));
+    }
+    if($data){
+        $url = 'data:image/'.$ext.';base64,'.$data;
+    }else{
+        $url = $base.$url;
+    }
+    return $pre.$url;
+}
+
 
 /**
  * Returns a list of possible Plugin Styles (no existance check here)
diff --git a/lib/plugins/config/lang/en/lang.php b/lib/plugins/config/lang/en/lang.php
index 9b7c643bfbf9b1370652e2abb0d829b6a3175769..e5dd4707a5fe2e1e85b73985772110ca7575dc2c 100644
--- a/lib/plugins/config/lang/en/lang.php
+++ b/lib/plugins/config/lang/en/lang.php
@@ -133,6 +133,7 @@ $lang['jpg_quality'] = 'JPG compression quality (0-100)';
 $lang['subscribers'] = 'Enable page subscription support';
 $lang['subscribe_time'] = 'Time after which subscription lists and digests are sent (sec); This should be smaller than the time specified in recent_days.';
 $lang['compress']    = 'Compact CSS and javascript output';
+$lang['cssdatauri']  = 'Size in bytes up to which images referenced in CSS files should be embedded right into the stylesheet to reduce HTTP request header overhead. This technique won\'t work in IE < 8! <code>400</code> to <code>600</code> bytes is a good value. Set <code>0</code> to disable.';
 $lang['hidepages']   = 'Hide matching pages (regular expressions)';
 $lang['send404']     = 'Send "HTTP 404/Page Not Found" for non existing pages';
 $lang['sitemap']     = 'Generate Google sitemap (days)';
diff --git a/lib/plugins/config/settings/config.metadata.php b/lib/plugins/config/settings/config.metadata.php
index af7e63a6180a7d3ee1f6f3be4941a3d2099c9acf..abea1be1cd594d4e177d91d501b91a2835aa15c8 100644
--- a/lib/plugins/config/settings/config.metadata.php
+++ b/lib/plugins/config/settings/config.metadata.php
@@ -179,6 +179,7 @@ $meta['autoplural']  = array('onoff');
 $meta['mailfrom']    = array('richemail');
 $meta['mailprefix']  = array('string');
 $meta['compress']    = array('onoff');
+$meta['cssdatauri']  = array('numeric','_pattern' => '/^\d+$/');
 $meta['gzip_output'] = array('onoff');
 $meta['hidepages']   = array('string');
 $meta['send404']     = array('onoff');