Возможно ли закешировать около 1 гб в браузере?
Возможно конечно. Для хранения больших объемов данных в браузерах существует встроенная БД IndexedDB.

Для работы с ней сначала подключаем специальную библиотеку, которая упрощает ввод и вывод:
<script src="https://cdnjs.cloudflare.com/ajax/libs/localforage/1.9.0/localforage.js"></script>
Далее, чтобы сохранить какие-то данные выполняем в консоли браузера:
result = await localforage.setItem('key', save_data);
console.log('Данные успешно сохранены:');
console.dir(result);
Где в save_data лежат сохраняемые данные, а key это ключ по которому можно было бы получить к ним доступ.

Из особенностей, в save_data мы можем положить любой тип данных - хоть строку, хоть массив, хоть объект. Да даже файл при желании можно сохранить! При этом нет ограничений по объему хранимых данных, можете хоть сто мегабайт, хоть триста запихнуть - встроенное хранилище все сожрет.

Чтобы потом извлечь сохраненные данные достаточно выполнить:
result = await localforage.getItem('key');
console.log('Данные успешно извлечены:');
console.dir(result);
Срок хранения данных - неограниченно. Или пока пользователь вручную не обнулит кеш браузера.

P. S. Обратите внимание, что если вы где-то в своем коде внутри функции используете слово await, то такая функция обязательно должна иметь приставку async! Иначе получите ошибку. В консоли можно использовать await в лоб, но для использования await в коде нужно, чтобы функция внутри которой она вызывается была асинхронной!!!
Нет (5-10 Мб максимум), да и глупо звучит. Что будут делать пользователи с ограниченными ресурсами?