diff --git a/lib/cache/fileglobal.php b/lib/cache/fileglobal.php
index d4336553c38d53353c3ff405fa01c48a1970d588..e551ad472a265e59f342fc9c02c9c7353307f24c 100644
--- a/lib/cache/fileglobal.php
+++ b/lib/cache/fileglobal.php
@@ -64,12 +64,13 @@ class OC_Cache_FileGlobal{
 		return unlink($cache_dir.$key);
 	}
 
-	public function clear(){
+	public function clear($prefix=''){
 		$cache_dir = self::getCacheDir();
+		$prefix = $this->fixKey($prefix);
 		if($cache_dir and is_dir($cache_dir)){
 			$dh=opendir($cache_dir);
 			while($file=readdir($dh)){
-				if($file!='.' and $file!='..'){
+				if($file!='.' and $file!='..' and ($prefix==='' || strpos($file, $prefix) === 0)){
 					unlink($cache_dir.$file);
 				}
 			}