Патент на изобретение №2358306

Published by on



РОССИЙСКАЯ ФЕДЕРАЦИЯ



ФЕДЕРАЛЬНАЯ СЛУЖБА
ПО ИНТЕЛЛЕКТУАЛЬНОЙ СОБСТВЕННОСТИ,
ПАТЕНТАМ И ТОВАРНЫМ ЗНАКАМ
(19) RU (11) 2358306 (13) C2
(51) МПК

G06F3/00 (2006.01)
G06F12/08 (2006.01)

(12) ОПИСАНИЕ ИЗОБРЕТЕНИЯ К ПАТЕНТУ

Статус: по данным на 30.08.2010 – действует

(21), (22) Заявка: 2004115491/09, 21.05.2004

(24) Дата начала отсчета срока действия патента:

21.05.2004

(30) Конвенционный приоритет:

23.05.2003 US 10/444,834

(43) Дата публикации заявки: 10.11.2005

(46) Опубликовано: 10.06.2009

(56) Список документов, цитированных в отчете о
поиске:
СА 2240600 А1, 12.12.1999. RU 2156546 С2, 20.09.2000. US 2002073206 А1, 13.06.2002. WO 01/46823 А1, 28.06.2001. WO 02/073460 A2, 19.09.2002. EP 1208466 А1, 29.05.2002.

Адрес для переписки:

129090, Москва, ул. Б.Спасская, 25, стр.3, ООО “Юридическая фирма Городисский и Партнеры”, пат.пов. Ю.Д.Кузнецову, рег. 595

(72) Автор(ы):

МИЛЛИНГТОН Брэдли Д. (US),
РОБСМАН Дмитрий (US)

(73) Патентообладатель(и):

МАЙКРОСОФТ КОРПОРЕЙШН (US)

(54) ПОДСТАНОВКА ПОСЛЕ КЭШИРОВАНИЯ

(57) Реферат:

Изобретения относятся к способам для подстановки, осуществляемой после кэширования. Техническим результатом является уменьшение времени ответа на запрос клиента. Способ вставки динамического контента в кэшированный контент при подаче кэшированного контента клиенту в системе, которая имеет сервер, который в ответ на запросы клиентов подает контент из кэша контента, заключается в следующем: принимают от клиента запрос на контент; извлекают из кэша цепочку буферов ответа, которая включает в себя блок подстановки с элементом-делегатом, при этом цепочка буферов ответа соответствует контенту, запрошенному клиентом, причем извлеченный из кэша ответа блок подстановки представляет собой заполнитель для динамического, некэшированного контента, который необходимо формировать всякий раз, когда данный контент запрашивается; и активируют ассоциированный с блоком подстановки элемент-делегат, который формирует динамический контент, который включают в цепочку буферов ответа, подаваемую в ответ на запрос клиента. 5 н. и 24 з.п. ф-лы, 6 ил.

ОБЛАСТЬ ТЕХНИКИ, К КОТОРОЙ ОТНОСИТСЯ ИЗОБРЕТЕНИЕ

Настоящее изобретение в целом относится к системам и способам, предназначенным для подстановки, осуществляемой после кэширования. Более конкретно настоящее изобретение относится к системам и способам, предназначенным для вставки динамического информационного значимого содержимого, или контента, в web-страницу, которая кэширована при выводе.

ПРЕДШЕСТВУЮЩИЙ УРОВЕНЬ ТЕХНИКИ

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

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

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

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

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

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

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

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

КРАТКОЕ ОПИСАНИЕ СУЩНОСТИ ИЗОБРЕТЕНИЯ

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

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

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

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

ПЕРЕЧЕНЬ ФИГУР ЧЕРТЕЖЕЙ

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

фиг.1 – пример системы, которая осуществляет подстановку после кэширования;

фиг.2 – пример контента, который подают из кэша и который включает в себя динамический контент;

фиг.3 – цепочка буферов ответа в кэше, которая соответствует запрошенному контенту, и ассоциированный с блоком подстановки элемент-делегат, который формирует новый контент;

фиг.4 – один вариант осуществления серверной системы, которая осуществляет вставку динамического контента в кэшированный контент;

фиг.5 – диаграмма последовательности операций для одного варианта осуществления способа обслуживания динамического контента в кэшированном контенте; и

фиг.6 – примерная система, которая обеспечивает соответствующую операционную среду для настоящего изобретения.

ПОДРОБНОЕ ОПИСАНИЕ ПРЕДПОЧТИТЕЛЬНЫХ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ

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

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

На фиг.1 проиллюстрирована примерная среда для реализации вариантов осуществления настоящего изобретения. На фиг.1 показаны клиент 100 и сервер 110, которые обмениваются данными через сеть 102. Сеть 102 может быть, например, локальной сетью, глобальной сетью, Интернет или любой их комбинацией. Сеть 102 может также включать в себя беспроводные и/или проводные сети. В этом примере контент, запрошенный клиентом 100, является web-страницей. Клиент 100 обычно использует программное обеспечение браузера, чтобы запросить web-страницы от сервера 110, и сервер 110 подает web-страницы клиенту 100 через сеть 102.

Когда сервер 110 принимает запрос web-страницы от клиента 100, сервер 110 обычно осуществляет проверку, чтобы определить, сохранена ли уже эта web-страница в кэше 112. Если web-страница сохранена в кэше 112, то кэшированную версию web-страницы подают клиенту 100. Если web-страница не сохранена в кэше 112, то сервер 110 обычно формирует web-страницу, подает web-страницу клиенту 100 и если страница отмечена как кэшируемая, сохраняет web-страницу в кэше 112 для будущих запросов клиента.

Как ранее отмечено, сервер 110 обычно предпочитает подавать web-страницы из кэша 112 по причинам эффективности. Когда сервер 110 должен формировать web-страницу, серверу 112 может потребоваться доступ к запоминающему устройству 114, базе данных 115 и/или к другим источникам для того, чтобы сформировать запрошенную web-страницу. Такие операции могут быть дорогостоящими в вычислительном отношении, вызывающими замедления (например, требующими время ожидания для того, чтобы завершить запрос к базе данных), или дорогостоящими в отношении ресурсов (например, требующими большого объема памяти для формирования web-страницы), и могут снижать возможности сервера 110 для ответов на запросы от других клиентов. В дополнение время ответа сервера 110 также может увеличиться. Кэш 112 дает возможность серверу 110 обслуживать web-страницы более эффективно.

На фиг.2 показан пример web-страницы, которая может обслуживаться сервером. Web-страница 200 может включать в себя новости 204 и область 206 рекламы. Новости 204 не меняются с большой частотой. Таким образом, для сервера представляет интерес кэшировать такие порции web-страницы 200. Каждая порция web-страницы 200 может иметь стратегию или политику кэширования, которая управляет тем, когда должен истечь срок кэшированных данных. Например, срок для новостей 204 может истекать каждые 20 минут. Это не возлагает ненадлежащие накладные расходы на сервер. Однако для сервера желательно размещать новую рекламу в области 206 рекламы каждый раз при обслуживании web-страницы 200. Настоящее изобретение позволяет разработчику ассоциировать, например, область 206 рекламы с элементом-делегатом обратного вызова, используемым для формирования динамического контента для области 206 рекламы при кэшировании web-страницы 200 полностью. Преимуществом является то, что серверу не требуется формировать web-страницу 200 каждый раз, когда запрашивают web-страницу 200, тогда как серверу позволено вставлять динамический контент для каждого запроса web-страницы 200.

На фиг.3 показано, как web-страница 200 по фиг.2 может быть представлена в кэше. В этом примере кэш web-сервера может быть представлен как последовательность цепочек 314 и 312 буферов ответа, хотя специалисту в данной области техники должно быть понятно, что кэш web-сервера может быть представлен другими способами и структурами. Каждая цепочка буферов ответа обычно соответствует, в данном примере, конкретной web-странице или другому контенту, который может быть запрошен клиентом. Цепочка буферов 314 ответа соответствует первой web-странице, и цепочка буферов 312 ответа соответствует второй web-странице.

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

На фиг.3 дополнительно показана цепочка буферов 312 ответа, которая включает в себя буфер 302 ответа, блок 304 подстановки и буфер 306 ответа. Количество буферов ответа в конкретной цепочке буферов ответа может изменяться и соотнесено с web-страницей или другим контентом, запрошенным клиентом. Блок подстановки 304 является буфером-«заполнителем», который вставлен в цепочку буферов 312 ответа. Когда цепочку буферов 312 ответа записывают обратно клиенту в качестве ответа на запрос, блок 304 подстановки активирует элемент-делегат 308 для того, чтобы сформировать буфер 310 ответа или другой контент, который записывают или посылают клиенту. Блок подстановки позволяет формирование динамического контента при каждом запросе страницы. Одним обычным применением является вставка новой рекламы в область 206 рекламы web-страницы 200 (см. фиг.2) каждый раз, когда запрашивают web-страницу 200.

В примере по фиг.3 цепочка буферов 312 ответа представляет web-страницу, которая кэширована при выводе. Web-страница является кэшированной полностью, и блок подстановки включен в состав буферов ответа. Блок подстановки идентифицирует ту порцию web-страницы, которая является не подлежащей кэшированию. Это позволяет формировать динамический контент на обозначенных местоположениях внутри кэшированного ответа, как проиллюстрировано на фиг.3.

Другим модулем является модуль 408 обработки запросов, используемый для определения, сохранена ли web-страница, идентифицированная в запросе 404, в кэше 416. Если web-страница, запрошенная клиентом, сохранена в кэше 416, то модуль 408 обработки запросов осуществляет доступ к кэшу 416 для извлечения буферов 418 ответа, которые соответствуют web-странице, запрошенной клиентом в запросе 404. Когда блок 417 подстановки распознан модулем 408 обработки запросов, то активируют элемент-делегат, ассоциированный с блоком 417 подстановки, как ранее описано, и формируют новый контент и включают его в ответ 406 вместо блока 417 подстановки. Если web-страница не находится в кэше 416, то модуль 410 формирования страницы осуществляет доступ к запоминающему устройству 412 (которое может включать в себя, например, локальные и/или удаленные источники данных) для построения web-страницы, запрошенной клиентом. В обоих случаях модуль 408 обработки запросов затем подает ответ 406 клиенту. Кэш 416 содержит статические данные, и блок 417 подстановки обуславливает, что новый или динамический контент будет вставлен в ответ 406 вместо блока 417 подстановки.

На фиг.5 показана схема последовательности операций, на которой более полно проиллюстрирована подстановка после кэширования или возможность вставки динамического контента в статический кэшированный контент. Серверная система принимает от клиента запрос (500) страницы или другой запрос на контент. Выполняют определение того, находится ли страница в кэше (502) серверной системы. Если страница находится в кэше, то извлекают цепочку (506) буферов ответа из кэша. Затем активируют (508) элемент-делегат, ассоциированный с блоком подстановки в цепочке буферов ответа, для формирования контента, который будет включен в состав ответа вместо блока подстановки наряду с другими буферами ответа. В заключение серверная система записывает ответ (510) клиенту.

Если страница не находится в кэше (502), то серверная система формирует страницу (512). По мере того, как страницу формируют (512), блок подстановки обычно добавляют к цепочке буферов ответа, которые составляют кэшированную страницу (514). Кроме того, возможность кэширования на стороне клиента снижают (516) с общедоступной на реализуемую только на сервере, так что страница не является кэшируемой на клиенте по мере того, как формируют страницу. Это гарантирует, что будущие запросы к странице повторно активируют элемент-делегат, ассоциированный с блоком подстановки, для того, чтобы сформировать новый контент. После того, как страница сформирована, ответ может быть кэширован для вывода (если это целесообразно) в кэше серверной системы (517), и ответ записывают или посылают клиенту (510).

Подстановка после кэширования обеспечивает несколько преимуществ для разработчиков страниц, что упрощает разработку кэшированных при выводе web-страниц. Например, разработчик может написать метод с предписанной сигнатурой обратного вызова, который воспринимает один контекстный параметр и возвращает строку, которая является контентом для подстановки в заданное местоположение. Разработчик затем вызывает “Response.WriteSubstitution” и передает метод обратного вызова в качестве параметра. Метод обратного вызова может либо быть статическим методом на вмещающей странице или UserControl (пользовательским управляющим элементом), либо статическим методом или методом экземпляра класса для другого произвольного объекта. Метод обратного вызова должен быть с многопроцессной поддержкой, поскольку он может быть активирован одновременно из нескольких подпроцессов, если одновременно поступают несколько запросов на одну и ту же кэшированную страницу. В нижеследующем примере показано использование “Response.WriteSubstitution”.

<%@ OutputCache Duration = “60” VaryByParam = “none” %>