Лично я был бы склонен вообще не хранить его в базе данных, а скорее запускать фоновое задание, чтобы свернуть сайт, проанализировать его и отфильтровать с вашим портом читабельности, а затем сохранить его где-нибудь в файловой системе (общедоступный или непубличный, в зависимости от ваших потребностей, вы можете легко написать контроллер, обслуживающий ресурсы, чтобы показать непубличный статический контент), используя схему каталогов, которая однозначно идентифицирует его.
Таким образом, вам не нужно делать какие-то ужасные, сложные вещи, и вы можете просто позволить серверам делать то, что у них хорошо получается, вместо того, чтобы писать что-то нестандартное для извлечения потенциально больших объемов данных из базы данных.каждый раз, когда эта страница просматривается.
Для чего-то подобного вам всего лишь нужна простая запись в базе данных с идентификатором, URL-адресом, каким-то флагом, указывающим, что она была успешно загружена (или когда произошла последняя ошибка,это можно будет повторить позже), путь к файловой системе, в которой он должен / будет сохранен, и, возможно, текстовый столбец с дампом текста страниц для целей поиска.