Долгосрочное статическое кэширование страниц - PullRequest
4 голосов
/ 31 августа 2008

Я поддерживаю несколько клиентских сайтов, у которых нет динамических данных, все статично asp.net с c #.
Есть ли какие-нибудь подводные камни для кэширования всей страницы в течение экстремальных периодов времени, например, недели?

Kibbee, мы используем пару элементов управления на сайтах (ротатор рекламы, некоторые из расширений ajax) на сайтах. Возможно, они могут быть полностью написаны на html, но для удобства я просто остановился на том, что мы используем для каждого другого сайта.

Ответы [ 6 ]

2 голосов
/ 31 августа 2008

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

Если есть большие файлы для кэширования, я хотел бы убедиться, что ваш движок контента поддерживает If-Modified-Since.

Для файлов меньшего размера (содержимое страницы, CSS, изображения и т. Д.), Где сокращение числа обращений является ключевым фактором, с длительным сроком действия (год?) И изменением URL-адреса при изменении содержимого, лучше , Это позволяет вам контролировать, когда пользовательские агенты будут загружать новый контент.

Yahoo! опубликовали статью из двух частей о сокращении HTTP-запросов и использовании кэша браузера . Я не буду повторять все это здесь, но это хорошее чтение, которое поможет вам в том, что делать.

Мне кажется, что нужно выбрать период времени, достаточно высокий, чтобы охватить большинство пользовательских сессий, но достаточно низкий, чтобы не причинять слишком много неудобств, если вы захотите обновить контент. Обязательно поддержите If-Modified-Since, если у вас есть Last-Modified для всего вашего контента.

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

1 голос
/ 26 февраля 2009

Если это статично, зачем вообще беспокоиться о кешировании? Пусть IIS беспокоится об этом.

1 голос
/ 09 сентября 2008

У нас похожая проблема в проекте, над которым я работаю. Есть данные, которые в значительной степени статичны, но открыты для изменения.

Я закончил тем, что сохранил данные в локальном файле и затем отслеживал их на предмет изменений. В этом случае сервер БД никогда не ударится, если мы не удалим файл, в этом случае он перейдет в БД и восстановит файл данных.

Так что у нас в основном немного дискового ввода-вывода при загрузке / сохранении, нет трафика на сервер БД без необходимости, и мы все еще контролируем его (мы можем либо удалить его вручную, либо написать скрипт и т. Д.).

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

Это может быть совершенно неверный путь, но, похоже, это работает для нас неплохо:)

0 голосов
/ 26 февраля 2009

Если он статический, вам, вероятно, лучше сгенерировать страницы один раз, а затем напрямую обработать полученный статический HTML-файл.

0 голосов
/ 31 августа 2008

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

0 голосов
/ 31 августа 2008

Когда вы говорите, что у вас нет данных, как вы вообще используете asp.net или c #. Какая функциональность предоставляет вам простой HTML? Кроме того, если вы планируете кэширование, вероятно, лучше всего кэшировать файл, а затем, когда сделан запрос, вывести файл из потока. ОС позаботится о сохранении файла в памяти, чтобы вам не приходилось все время считывать его с диска.

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