summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ext/bg/js/backend.js3
-rw-r--r--ext/bg/js/settings/audio.js5
-rw-r--r--ext/mixed/js/audio-system.js22
-rw-r--r--ext/mixed/js/display.js3
4 files changed, 22 insertions, 11 deletions
diff --git a/ext/bg/js/backend.js b/ext/bg/js/backend.js
index 79402e67..9d1fa6c1 100644
--- a/ext/bg/js/backend.js
+++ b/ext/bg/js/backend.js
@@ -53,7 +53,8 @@ class Backend {
this.defaultAnkiFieldTemplates = null;
this.audioUriBuilder = new AudioUriBuilder();
this.audioSystem = new AudioSystem({
- audioUriBuilder: this.audioUriBuilder
+ audioUriBuilder: this.audioUriBuilder,
+ useCache: false
});
this.ankiNoteBuilder = new AnkiNoteBuilder({
anki: this.anki,
diff --git a/ext/bg/js/settings/audio.js b/ext/bg/js/settings/audio.js
index 68dfe71e..98ed9b8b 100644
--- a/ext/bg/js/settings/audio.js
+++ b/ext/bg/js/settings/audio.js
@@ -28,7 +28,10 @@ let audioSourceUI = null;
let audioSystem = null;
async function audioSettingsInitialize() {
- audioSystem = new AudioSystem({audioUriBuilder: null});
+ audioSystem = new AudioSystem({
+ audioUriBuilder: null,
+ useCache: true
+ });
const optionsContext = getOptionsContext();
const options = await getOptionsMutable(optionsContext);
diff --git a/ext/mixed/js/audio-system.js b/ext/mixed/js/audio-system.js
index 5366e3e0..255a96de 100644
--- a/ext/mixed/js/audio-system.js
+++ b/ext/mixed/js/audio-system.js
@@ -66,8 +66,8 @@ class TextToSpeechAudio {
}
class AudioSystem {
- constructor({audioUriBuilder}) {
- this._cache = new Map();
+ constructor({audioUriBuilder, useCache}) {
+ this._cache = useCache ? new Map() : null;
this._cacheSizeMaximum = 32;
this._audioUriBuilder = audioUriBuilder;
@@ -79,10 +79,14 @@ class AudioSystem {
async getDefinitionAudio(definition, sources, details) {
const key = `${definition.expression}:${definition.reading}`;
- const cacheValue = this._cache.get(definition);
- if (typeof cacheValue !== 'undefined') {
- const {audio, uri, source} = cacheValue;
- return {audio, uri, source};
+ const hasCache = (this._cache !== null);
+
+ if (hasCache) {
+ const cacheValue = this._cache.get(key);
+ if (typeof cacheValue !== 'undefined') {
+ const {audio, uri, source} = cacheValue;
+ return {audio, uri, source};
+ }
}
for (const source of sources) {
@@ -91,8 +95,10 @@ class AudioSystem {
try {
const audio = await this._createAudio(uri);
- this._cacheCheck();
- this._cache.set(key, {audio, uri, source});
+ if (hasCache) {
+ this._cacheCheck();
+ this._cache.set(key, {audio, uri, source});
+ }
return {audio, uri, source};
} catch (e) {
// NOP
diff --git a/ext/mixed/js/display.js b/ext/mixed/js/display.js
index 7f3ba859..8edae7c9 100644
--- a/ext/mixed/js/display.js
+++ b/ext/mixed/js/display.js
@@ -50,7 +50,8 @@ class Display {
async getUri(definition, source, details) {
return await apiAudioGetUri(definition, source, details);
}
- }
+ },
+ useCache: true
});
this.styleNode = null;