Я пытаюсь динамически генерировать карту сайта для большого веб-сайта с тысячами страниц.
Да, я подумал о том, чтобы создать файл карты сайта в автономном режиме и просто обслуживать его статически, и я мог бы сделать именно это. Но я думаю, что это в целом полезный вопрос:
Как я могу передавать большие данные из БД в Wicket?
Я следовал инструкциям на странице Wicket SEO и смог заставить работать динамическую реализацию карты сайта с использованием DataProvider. Но он не масштабируется - ему не хватает памяти, когда он вызывает метод iterator()
моего DataProvider с аргументом count
, равным общему количеству возвращаемых мной объектов, вместо того, чтобы перебирать их по частям.
Я думаю, что решение лежит где-то с WebResource/ResourceStreamingRequestTarget
. Но эти классы ожидают IResourceStream
, что в конечном итоге сводится к обеспечению реализации InputStream
, которая работает с байтами, а не с записями в БД. Я не знаю, как реализовать метод length()
в таком случае, поскольку для этого потребуется заранее просмотреть каждую запись, чтобы вычислить общую длину.