Является ли эта система кэширования страниц разумной? - PullRequest
1 голос
/ 05 сентября 2010

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

Прежде чем я покажу содержимое пользователя, я бы сохранилКонтрольная сумма MD5 содержимого в базе данных вместе с идентификатором пользователя и URL-адресом страницы.

Когда он войдет в систему в следующий раз, я проверю, есть ли запись с URL-адресом и идентификатором пользователя.Если есть, я сравниваю сохраненный MD5 с тем, который я рассчитал заново, и если MD5 равны, я отправляю заголовок «не изменен», чтобы браузер не загружал всю страницу.

1 Ответ

3 голосов
/ 05 сентября 2010

Вы впервые профилировали веб-приложение, чтобы определить, где находятся ваши узкие места в производительности?

Остерегайтесь ненужной оптимизации: если страницы уже загружаются просто отлично, но вы пытаетесь выжать несколько процентных пунктов скорости, я лично не стал бы заниматься какой-либо специализированной оптимизацией.

Используя предложенный метод, имейте в виду, что в дополнение к вычислениям MD5 вы по-прежнему будете делать попадания в базу данных. Сначала убедитесь, что в базе данных имеются правильные индексы для ускорения ваших запросов - это может быть все, что вам нужно сделать.

Является ли изображение страницы тяжелым? Изображения хранятся в виде больших двоичных объектов в базе данных или в файловой системе? Если изображения хранятся в базе данных, переместите их в файловую систему и сохраните имена файлов в базе данных. Используйте веб-сервер, выделенный для статического контента, для обработки изображений. Сервер статического содержимого также может быть прокси для вашего приложения.

Если цель состоит в том, чтобы уменьшить использование полосы пропускания с точки зрения содержания открытого текста (т. Е. HTML, CSS и JavaScript), я предлагаю просто включить сжатие gzip. Также рассмотрим статический контент веб-сервер для этого случая.

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

...