В моем приложении есть возможность создавать PDF-файлы.Библиотека, которую я использую, не избавляется от них после того, как они созданы и загружены.В конце концов, после создания достаточного количества PDF-файлов хранимые данные BLOB-объектов становятся такими большими, что это приводит к сбою браузера.
Одним из решений будет обновление браузера после печати.Это действительно испортило бы пользовательский опыт, потому что они потеряли бы свои текущие параметры печати.
Решение этой проблемы состояло бы в том, чтобы сохранить параметры печати в sessionStorage
или что-то в этом роде, чтобы они восстанавливались при обновлении.готово.
В любом случае, самое простое решение, которое можно реализовать, - это просто очистить определенные данные большого двоичного объекта или удалить все данные большого двоичного объекта после завершения печати.
Это то, что явижу chrome: // blob-internals.Первый элемент - это то, что я хочу удалить;два элемента под строкой являются просто ссылками URL-адресов на большой двоичный объект.
Как мне это сделать либо специально, либо просто очистить все большие двоичные объекты в Javascipt?
![enter image description here](https://i.stack.imgur.com/khurz.png)
Попытался сделать следующее:
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