@@ -19,7 +19,7 @@ import NestedError, { $expectTarget, $expectInherit, $expectInstance } from './u
1919import CryptoJS from 'crypto-js' ;
2020import SyntaxBase from './core/SyntaxBase' ;
2121import ParagraphBase from './core/ParagraphBase' ;
22- import { PUNCTUATION , longTextReg , imgBase64Reg , imgDrawioXmlReg } from './utils/regexp' ;
22+ import { PUNCTUATION , longTextReg , imgBase64Reg , imgDrawioXmlReg , base64Reg } from './utils/regexp' ;
2323import { escapeHTMLSpecialChar } from './utils/sanitize' ;
2424import Logger from './Logger' ;
2525import { configureMathJax } from './utils/mathjax' ;
@@ -343,7 +343,12 @@ export default class Engine {
343343
344344 // 缓存大文本数据,用以提升渲染性能
345345 $cacheBigData ( md ) {
346- let $md = md . replace ( imgBase64Reg , ( whole , m1 , m2 ) => {
346+ let $md = md . replace ( base64Reg , ( dataUri ) => {
347+ const cacheKey = `data:cherry/cache;sha256,${ this . hash ( dataUri ) } ` ;
348+ this . cachedBigData [ cacheKey ] = dataUri ;
349+ return cacheKey ;
350+ } ) ;
351+ $md = $md . replace ( imgBase64Reg , ( whole , m1 , m2 ) => {
347352 const cacheKey = `bigDataBegin${ this . hash ( m2 ) } bigDataEnd` ;
348353 this . cachedBigData [ cacheKey ] = m2 ;
349354 return `${ m1 } ${ cacheKey } )` ;
@@ -361,10 +366,17 @@ export default class Engine {
361366 return $md ;
362367 }
363368
369+ /**
370+ * @param {string } md
371+ */
364372 $deCacheBigData ( md ) {
365- return md . replace ( / b i g D a t a B e g i n [ ^ \n ] + ?b i g D a t a E n d / g, ( whole ) => {
366- return this . cachedBigData [ whole ] ;
367- } ) ;
373+ return md
374+ . replace ( / d a t a : c h e r r y \/ c a c h e ; s h a 2 5 6 , [ 0 - 9 a - f ] + / g, ( cacheUri ) => {
375+ return this . cachedBigData [ cacheUri ] ;
376+ } )
377+ . replace ( / b i g D a t a B e g i n [ ^ \n ] + ?b i g D a t a E n d / g, ( whole ) => {
378+ return this . cachedBigData [ whole ] ;
379+ } ) ;
368380 }
369381
370382 /**
0 commit comments