Удалите определенные данные большого двоичного объекта или полностью удалите все сохраненные данные большого двоичного объекта с помощью JS - PullRequest
0 голосов
/ 21 ноября 2018

В моем приложении есть возможность создавать PDF-файлы.Библиотека, которую я использую, не избавляется от них после того, как они созданы и загружены.В конце концов, после создания достаточного количества PDF-файлов хранимые данные BLOB-объектов становятся такими большими, что это приводит к сбою браузера.

Одним из решений будет обновление браузера после печати.Это действительно испортило бы пользовательский опыт, потому что они потеряли бы свои текущие параметры печати. ​​

Решение этой проблемы состояло бы в том, чтобы сохранить параметры печати в sessionStorage или что-то в этом роде, чтобы они восстанавливались при обновлении.готово.

В любом случае, самое простое решение, которое можно реализовать, - это просто очистить определенные данные большого двоичного объекта или удалить все данные большого двоичного объекта после завершения печати. ​​

Это то, что явижу chrome: // blob-internals.Первый элемент - это то, что я хочу удалить;два элемента под строкой являются просто ссылками URL-адресов на большой двоичный объект.

Как мне это сделать либо специально, либо просто очистить все большие двоичные объекты в Javascipt?

enter image description here

Попытался сделать следующее:

handleDownload(filename, blob, url, e) {
    e.preventDefault();
    saveAs(blob, filename);
    this.props.pdfPrint(false);
    delete blob;
}

Но это дает ошибку Deleting local variable in strict mode.Пытался:

handleDownload(filename, blob, url, e) {
    e.preventDefault();
    saveAs(blob, filename);
    this.props.pdfPrint(false);
    URL.revokeObjectURL(url);
    var test = {};
    test = blob
    delete test.blob;
}

, который просто удаляет одну из ссылок на BLOB-объект, но не на сам BLOB-объект.

При прочтении этого необходимо сначала удалить все ссылки:

https://stackoverflow.com/a/22899690/3123109

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...