Языки

» Html
» Java Script

» PHP

» Perl

» ASP

» CGI

» Xml

» Dhtml

» VBScript

» Java

» Css

Уроки

» Photoshop

» Corel Draw

» Dreamwawer

» Flash MX

Скачать

» Программы

» Книги

Шаблоны

» Сайтов

» Flash

» Скрипты

Active Server Pages

 » ASP для новичков

     » Главная страница

     » ASP для новичков

Правила кэширования Web-страниц

В предыдущем разделе мы рассмотрели основные ситуации, связанные с кэшированием Web-страниц. Как и всегда, разработчик должен найти компромисс между скоростью загрузки страниц и их динамическим обновлением. Если содержимое Web-страницы динамически обновляется, то, естественно, ни о каком кэшировании речь идти не может. Но подобный жесткий режим обновления содержимого Web-страниц все же будет создавать достаточно интенсивный трафик между браузером удаленного пользователя и WWW-сервером. Поэтому при разработке архитектуры Web-сайта следует по возможности достаточно четко разделить статические и динамические элементы по разным Web-страницам, чтобы статическое наполнение сайта могло быть кэшировано.

Но вернемся к установке правил кэширования Web-страниц. В ASP.NET в состав объекта HttpResponse был введен еще один дополнительный объект с наименованием Cache. Он реализуется при помощи класса HttpCachePoiicy. И этот объект предоставляет разработчику поистине беспрецедентный объем возможностей. Рассмотрим методы и свойства данного класса.

  • AppendCacheExtension. Метод устанавливает значение для заголовка HTTP Cache-Control. В качестве параметра методу передается значение типа string, которое и будет содержимым искомого заголовка HTTP. Необходимо упомянуть, что полностью все возможности, связанные с данным заголовком HTTP, реализованы только в браузере Internet Explorer последних версий. Другие браузеры просто проигнорируют данный заголовок, если в нем будут встречаться неизвестные параметры. Полностью возможные параметры для этого заголовка HTTP описаны в документе RFC 2616. Однако здесь мы приведем два наиболее часто используемых параметра. Один из них носит наименование pre-check. Значением данного параметра является целое число, указывающее продолжительность временного промежутка в секундах. Данный параметр указывает время, в течение которого разработчик или приложение не планируют изменять Web-страницу. Но при этом нельзя сказать точно, что она не будет изменена. Это просто планирование. Второй параметр обычно используется в паре с первым и носит наименование post-check. Его значением также является целое число, указывающее продолжительность временного промежутка в секундах. В течение этого промежутка времени браузер по запросу пользователя отображает Web-страницу из локального кэша, но при этом в фоновом режиме проверяет исходную версию Web-страницы, находящуюся на WWW-сервере, таким образом уменьшая риск предоставления неадекватной информации в будущем.
  • SetCacheability. Метод устанавливает правила кэширования Web-страницы в сети, т. е. область действия этого метода распространяется и на прокси-серверы. В качестве параметра данному методу передается значение типа HttpCacheabiiity. Данный тип является перечислимым, и в его состав входят следующие константы:
  • NoCache. Значение указывает, что данная Web-страница вообще не подлежит кэшированию, и браузер пользователя всегда должен запрашивать Web-страницу с сервера;
  • Private. Значение используется по умолчанию. Указывает, что Web-страница может кэшироваться браузером удаленного пользователя, но прокси-серверы не должны хранить ее копию в своем кэше;
  • Public. Значение указывает, что Web-страница может кэшироваться как браузером, так и прокси-серверами;
  • Server. Указывает, что кэшировать Web-страницу будет сам WWW-сервер. С точки зрения конечного получателя Web-страницы, нет никакой разницы между вариантами NoCache и Server, так как и в том, и в другом случае ни браузер, ни прокси-сервер не имеют права кэшировать Web-страницу, однако с точки зрения разработчика разница все-таки достаточно существенная. В конце концов, именно разработчику придется думать, как осуществлять кэширование Web-страниц на своем сервере.
  • SetExpires. Метод позволяет устанавливать точную дату и время, до наступления которых Web-страница не будет изменена, и браузер может использовать ее локальную версию, сохраненную в собственном кэше или кэше прокси-сервера. В качестве параметра методу передается значение типа DateTime.
  • setLastModified. Метод позволяет указывать для Web-страницы дату и время ее последнего изменения. При этом, по сути, устанавливается значение заголовка HTTP с наименованием Last-Modified. В качестве параметра методу передается значение типа DateTime.
  • SetLastModifiedFromFileDependencies. Данный метод, подобно предыдущему, устанавливает значение заголовка HTTP с наименованием Last-Modified. Но при этом разработчик не должен передавать устанавливаемое значение в качестве параметра. Метод сам получает его на основе атрибутов файла.
  • setNoServerCaching. Метод запрещает серверу производить кэширование искомой Web-страницы в своем кэше. То есть, при выполнении данного метода все запросы к Web-странице должны выполняться в полном объеме, а заранее сохраненная в кэше WWW-сервера копия страницы пользователю предоставляться не будет.

Помимо рассмотренного нами объекта, существует и еще один способ кэширования страниц ASP.NET. Он основан на использовании директивы Outputcache. Для того чтобы установить период годности данной Web-страницы равный одной минуте, мы должны в ее HTML-код включить следующую директиву:

<%@ OutputCache Duration="60" VaryByParam="None" %>

Однако необходимо понимать, что существует несколько доводов против использования подобного механизма регулирования кэширования Web-страниц. Во-первых, возможности данной директивы все-таки достаточно ограничены. Встроенный объект HttpCachePoiicy перекрывает их по всем параметрам. Во-вторых, следует осознавать, что ASP.NET все-таки является стройной системой, которая отходит от традиций языков сценариев, к которым, несомненно, относились предыдущие версии ASP, и приближается к системам класса RAD (Rapid Application Development). Следовательно, необходимо соблюдать основные принципы построения приложений и пользоваться все-таки встроенными классами, а не вставлять куски кода вручную в тело разрабатываемой Web-страницы.

Итак, резюмируем. В данном разделе мы рассмотрели основные возможности кэширования Web-страниц при помощи встроенного объекта HttpCachePoiicy и директивы output cache. Каждый разработчик волен сам выбирать, какой именно вариант ему подходит больше.

Сохранить документ

Сохранить документ (.doc)

Распечатать документ

Напечатать

 

Следующий урок


Общение
» Чат

» Форум

Реклама 

Здесь может быть Ваша реклама

Поиск

» Поиск

Статистика 

Связь
» Web дизайнер

» Ваша реклама

» Отзывы

» О проекте

 



Сайт управляется системой uCoz