Лучший способ кеширования страниц в базе данных? - PullRequest
3 голосов
/ 11 августа 2009

Я работаю над проектом по сбору данных с разных сайтов. Хорошая аналогия - сбор статистических данных на аукционах eBay. Однако, помимо хранения ключевых данных, мне действительно необходимо обеспечить доступ к исходной странице, и на некоторых сайтах исходные страницы могут не быть постоянными - например, если eBay удалил страницу аукциона после завершения. В идеале мне бы хотелось иметь систему, аналогичную тому, как Google кэширует страницы, например хранить копию страницы на моем собственном сервере. Однако мне сообщили, что могут возникнуть сложности, а также большое влияние на ресурсы, необходимые для моей базы данных.

Ответы [ 3 ]

3 голосов
/ 11 августа 2009

Даже если каждая страница, которую вы кэшируете, занимает всего 5 КБ, это все равно со временем увеличивается - кэшируйте 200 страниц, и вы добавили 1 МБ в свою БД; кэшируйте 20 000 страниц, и вы использовали 100 МБ - и многие страницы (если учесть разметку + контент) будут больше 5 КБ.

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

0 голосов
/ 11 августа 2009

Является ли проблемой то, что сохраненная страница не будет содержать файлы CSS и JS на стороне сервера, а это означает, что она, вероятно, будет плохо отображаться при обслуживании из кэширующей БД / файловой системы?

А как насчет фотографий или изображений на странице?

Я думаю, что 5Кб - это мало для сохранения страницы, и мне интересно, сохранять ли страницы, которые содержат JS ... особенно страницы AJAX. Мне трудно представить, что именно произойдет, но, может быть, вам нужно только увидеть текст на странице?

Кто-нибудь знает, как работает кеширование Google?

0 голосов
/ 11 августа 2009

Я бы повторил сказанное Дэвом, но, возможно, также рассмотрю вопрос о сохранении только изменений, если вы индексируете одну и ту же страницу снова и снова с течением времени. Кроме того, хранение текста как varbinary позволит сэкономить место. Что касается поиска, вы можете настроить Lucene параллельно индексировать страницы.

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