diff --git a/_test/tests/inc/pageutils_clean_id.test.php b/_test/tests/inc/pageutils_clean_id.test.php
index f67109ba3820220c580e74eb2dff853084de995c..25d0a9f6925398c5371f82403cac1eff1beced30 100644
--- a/_test/tests/inc/pageutils_clean_id.test.php
+++ b/_test/tests/inc/pageutils_clean_id.test.php
@@ -158,5 +158,15 @@ class init_clean_id_test extends DokuWikiTest {
         }
     }
 
+    function test_caching_ascii() {
+        global $conf;
+        $conf['deaccent'] = 0;
+        $this->assertEquals('pàge', cleanID('pàge',false));
+        $this->assertEquals('page', cleanID('pàge',true));
+
+        $this->assertEquals('page', cleanID('pagÄ–',true));
+        $this->assertEquals('pagÄ—', cleanID('pagÄ–',false));
+    }
+
 }
 //Setup VIM: ex: et ts=4 :
diff --git a/inc/pageutils.php b/inc/pageutils.php
index 6498fca4022cbb05e6f0adbd62aacdf4daa919b0..b7e09af5b34951beda2edd02cf16058c0ca77413 100644
--- a/inc/pageutils.php
+++ b/inc/pageutils.php
@@ -110,7 +110,7 @@ function cleanID($raw_id,$ascii=false){
     $cache = & $cache_cleanid;
 
     // check if it's already in the memory cache
-    if (isset($cache[(string)$raw_id])) {
+    if (!$ascii && isset($cache[(string)$raw_id])) {
         return $cache[(string)$raw_id];
     }
 
@@ -143,7 +143,7 @@ function cleanID($raw_id,$ascii=false){
     $id = preg_replace('#:[:\._\-]+#',':',$id);
     $id = preg_replace('#[:\._\-]+:#',':',$id);
 
-    $cache[(string)$raw_id] = $id;
+    if (!$ascii) $cache[(string)$raw_id] = $id;
     return($id);
 }