Подстановка после кэширования

Изобретения относятся к способам для подстановки, осуществляемой после кэширования. Техническим результатом является уменьшение времени ответа на запрос клиента. Способ вставки динамического контента в кэшированный контент при подаче кэшированного контента клиенту в системе, которая имеет сервер, который в ответ на запросы клиентов подает контент из кэша контента, заключается в следующем: принимают от клиента запрос на контент; извлекают из кэша цепочку буферов ответа, которая включает в себя блок подстановки с элементом-делегатом, при этом цепочка буферов ответа соответствует контенту, запрошенному клиентом, причем извлеченный из кэша ответа блок подстановки представляет собой заполнитель для динамического, некэшированного контента, который необходимо формировать всякий раз, когда данный контент запрашивается; и активируют ассоциированный с блоком подстановки элемент-делегат, который формирует динамический контент, который включают в цепочку буферов ответа, подаваемую в ответ на запрос клиента. 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.

На фиг.4 проиллюстрирован пример серверной системы 400, которая способна формировать динамический контент для кэшированных web-страниц. Серверная система 400 принимает от клиента запрос 404 на контент. В данном примере контентом, запрошенным клиентом, является web-страница. Конвейерный модуль 402 вывода принимает запрос 404, и конвейерный модуль 402 вывода обычно включает в себя несколько модулей для обработки запросов 404. Такие модули обрабатывают запрос 404, чтобы сформировать соответствующий ответ от серверной системы 400. В одном варианте осуществления упомянутые модули действуют последовательно. Например, модули могут включать в себя модуль аутентификации, который определяет, является ли запрос 404 запросом от известного клиента и имеет ли клиент право на доступ к запрошенной странице. Если пользователь не распознан, то ответ обычно указывает, что доступ отклонен, и последующие модули в конвейерном модуле 402 вывода не должны обрабатывать запрос 404. Другие модули могут, например, поддерживать файл журнала регистрации обрабатываемых входящих запросов, решать задачу преобразования запросов, чтобы установить соответствие входящих унифицированных адресов ресурса (URL) в запросе с запрошенным контентом, определять, является ли пользователь авторизованным, и т.п.

Другим модулем является модуль 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" %>

<script language = "C#" runat = "server">

public static String GetCurrentDate (HttpContext context) {

return DateTime.Now.ToString();

}

</script>

... кэшируемый контент...

...

<% Response.WriteSubstitution (new HttpResponseSubstitutionCallback (GetCurrentDate))%>

...

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

В другом примере разработчик может вставлять серверный управляющий элемент Substitution (Подстановка) в то местоположение на странице, в которое следует подставлять контент, и установить свойство MethodName (ИмяМетода) на метод обратного вызова. В отличие от Response.WriteSubstitution, который может принимать метод обратного вызова произвольного объекта, свойство для серверного управляющего элемента Substitution, именуемое MethodName, устанавливают на статический метод на вмещающей странице управляющего элемента или UserControl (пользовательском управляющем элементе). В нижеследующем примере проиллюстрировано использование серверного управляющего элемента Substitution.

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

<script language = "C#" runat = "server">

public static String GetUserName (HttpContext context) {

return context.User.Identity.Name;

}

</script>

... кэшируемый контент...

...<h2> Добро пожаловать <asp:Substitution MethodName = "GetUserName" />!</h2>

...

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

Варианты осуществления настоящего изобретения могут содержать компьютер специального или общего назначения, который включает в себя различные аппаратные средства компьютера, как обсуждено с большей подробностью ниже. Компьютер может быть клиентским компьютером или серверным компьютером. В том случае когда компьютер является серверным компьютером, некоторые из компонентов, проиллюстрированных на фиг.6, не являются всегда необходимыми. Серверному компьютеру, например, обычно для функционирования не требуется монитор, накопитель на гибком диске или последовательный порт. Таким образом, на фиг.6 проиллюстрирован один из вариантов осуществления соответствующей вычислительной среды. Варианты осуществления в рамках объема настоящего изобретения включают в себя также машиночитаемый носитель, переносящий или имеющий машиноисполняемые инструкции или структуры данных, сохраненные на нем. Такой машиночитаемый носитель может быть любым доступным носителем, к которому можно осуществлять доступ посредством компьютера общего назначения или компьютера специального назначения. В качестве примера, а не ограничения, такой машиночитаемый носитель может содержать ОЗУ, ПЗУ, электрически стираемое перепрограммируемое ПЗУ (EEPROM), ПЗУ на компакт-диске (CD-ROM) или другой дисковый оптический накопитель, дисковый магнитный накопитель или другие магнитные запоминающие устройства, или любой другой носитель, который можно использовать для переноса или хранения требующегося программного кода в форме машиноисполняемых инструкций или структур данных и к которому может осуществлять доступ компьютер общего или специального назначения. Когда информацию передают или предоставляют через сеть или другое коммуникационное соединение (либо проводное, либо беспроводное, либо комбинацию проводного и беспроводного) на компьютер, то компьютер по существу рассматривает это соединение как машиночитаемый носитель. Таким образом, любое подобное соединение по существу названо машиночитаемым носителем. Комбинации вышеупомянутого следует также включать в диапазон машиночитаемых носителей. Машиноисполняемые инструкции включают в себя, например, инструкции и данные, которые предписывают компьютеру общего назначения, компьютеру специального назначения или устройству обработки данных специального назначения исполнить некоторую функцию или группу функций.

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

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

Что касается фиг.6, на ней показана иллюстративная система для реализации настоящего изобретения, которая включает в себя вычислительное устройство общего назначения в виде обычного компьютера 20, включающего в себя процессор 21, системную память 22 и системную шину 23, которая связывает различные системные компоненты, включая системную память 22, с процессором 21. Системная шина 23 может быть любой из нескольких типов шинной архитектуры, включая шину памяти или контроллер памяти, периферийную шину и локальную шину, используя любую шинную архитектуру из разнообразия шинных архитектур. Системная память включает в себя постоянное запоминающее устройство (ПЗУ, ROM) 24 и оперативное запоминающее устройство (ОЗУ, RAM) 25. Базовая система ввода/вывода (BIOS) 26, содержащая основные процедуры, которые помогают передавать информацию между элементами компьютера 20, как, например, при запуске, может храниться в ПЗУ 24.

Компьютер 20 может также включать в себя накопитель 27 на жестких магнитных дисках для чтения с жесткого магнитного диска 39 и записи на него, дисковод 28 для магнитного диска для чтения со сменного магнитного диска 29 или записи на него и дисковод 30 для оптического диска для чтения со сменного оптического диска 31, такого как CD-ROM или другой оптический носитель, или записи на него.

Накопитель 27 на жестких магнитных дисках, дисковод 28 для магнитного диска и дисковод 30 для оптического диска соединены с шиной 23 посредством интерфейса 32 накопителя на жестких магнитных дисках, интерфейса 33 дисковода для магнитного диска и интерфейса 34 дисковода для оптического диска соответственно. Накопители и дисководы и ассоциированные с ними машиночитаемые носители обеспечивают энергонезависимое хранение машиноисполняемых инструкций, структур данных, программных модулей и других данных для компьютера 20. Несмотря на то что иллюстративная среда, описанная в настоящем документе, использует магнитный жесткий диск 39, сменный магнитный диск 29 и сменный оптический диск 31, могут быть использованы другие типы машиночитаемых носителей, предназначенных для хранения данных, включая магнитные кассеты, карты флэш-памяти, цифровые универсальные диски, картриджи Бернулли, оперативные запоминающие устройства (ОЗУ), постоянные запоминающие устройства (ПЗУ) и т.п.

Средства программного кода, содержащие один или несколько программных модулей, могут храниться на жестком диске 39, магнитном диске 29, оптическом диске 31, в ПЗУ 24 или в ОЗУ 25, включая операционную систему 35, одну или несколько прикладных программ 36, другие программные модули 37 и данные 38 программ. Пользователь может вводить команды и информацию в компьютер 20 посредством клавиатуры 40, указывающего устройства 42 или других устройств ввода данных (не показаны), таких как микрофон, джойстик, игровая панель, спутниковая антенна, сканер и т.п. Эти и другие устройства ввода данных обычно соединены с процессором 21 через интерфейс 46 последовательного порта, который связан с системной шиной 23. Альтернативно устройства ввода данных могут быть подсоединены посредством других интерфейсов, таких как параллельный порт, игровой порт или универсальная последовательная шина (USB). Монитор 47 или другое устройство отображения также соединены с системной шиной 23 через интерфейс, такой как видеоадаптер 48. Дополнительно к монитору персональные компьютеры обычно включают в себя другие периферийные устройства вывода (не показаны), такие как громкоговорители и принтеры.

Компьютер 20 может функционировать в сетевой среде, используя логические соединения с одним или большим количеством удаленных компьютеров, такими как удаленные компьютеры 49a и 49b. Каждый из удаленных компьютеров 49a и 49b может быть другим персональным компьютером, сервером, маршрутизатором, сетевым ПК, одноранговым узлом или другим обычным узлом сети и обычно включает в себя многие или все элементы из описанных выше элементов, относящихся к компьютеру 20, хотя на фиг.6 проиллюстрированы только запоминающие устройства 50a и 50b и ассоциированные с ними прикладные программы 36a и 36b. Логические соединения, изображенные на фиг.6, включают в себя локальную сеть (LAN) 51 и глобальную сеть (WAN) 52, которые представлены в настоящем описании в качестве примера, а не ограничения. Подобные сетевые среды являются обычными для вычислительных сетей масштаба учреждения или сетей масштаба предприятия и Интернет.

При использовании в сетевой среде LAN компьютер 20 соединен с локальной сетью 51 через сетевой интерфейс или адаптер 53. При использовании в сетевой среде WAN компьютер 20 может включать в себя модем 54, беспроводную линию связи или другие средства для установления связи через глобальную сеть 52, такую как Интернет. Модем 54, который может быть внутренним или внешним, соединен с системной шиной 23 через интерфейс 46 последовательного порта. В сетевой среде программные модули, изображенные относящимися к персональному компьютеру 20, или их части могут быть сохранены на удаленном запоминающем устройстве. Следует понимать, что показанные сетевые соединения являются иллюстративными и могут быть использованы другие средства установления связи в глобальной сети 52.

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

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

2. Способ по п.1, дополнительно содержащий этап, на котором подают в ответе клиенту контент, который включает в себя контент, включающий в себя динамический контент.

3. Способ по п.1, в котором при приеме от клиента запроса на контент определяют, сохранен ли в кэше контент, запрошенный клиентом.

4. Способ по п.3, в котором при определении того, сохранен ли в кэше запрошенный клиентом контент, формируют контент, если контент не сохранен в кэше.

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

6. Способ по п.1, в котором при активации ассоциированного с блоком подстановки элемента-делегата, формирующего динамический контент, включаемый в цепочку буферов ответа, подаваемую в ответ на запрос клиента, записывают контент, включающий в себя динамический контент, в ответ, посылаемый клиенту.

7. Способ по п.1, в котором при активации ассоциированного с блоком подстановки элемента-делегата, формирующего динамический контент, включаемый в цепочку буферов ответа, подаваемую в ответ на запрос клиента, вставляют динамический контент в цепочку буферов ответа вместо блока подстановки.

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

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

10. Способ по п.9, дополнительно содержащий этап, на котором подают ответ, включающий в себя динамический контент.

11. Способ по п.9, в котором при приеме последующего запроса клиента на контент, соответствующий сохраненному в кэше ответу, определяют, сохранен ли в кэше контент, запрошенный в этом последующем запросе клиента.

12. Способ по п.8, дополнительно содержащий этап, на котором вызывают элемент-делегат для формирования динамического контента, который включают в ответ клиенту.

13. Способ по п.12, дополнительно содержащий этап, на котором вызывают элемент-делегат посредством пользовательского управляющего элемента.

14. Способ по п.12, в котором при вызове элемента-делегата для формирования динамического контента, который включают в ответ на запрос клиента, вызывают элемент-делегат посредством серверного управляющего элемента.

15. Способ по п.8, в котором при добавлении блока подстановки к кэшируемому ответу вставляют блок подстановки в цепочку буферов ответа, при этом цепочка буферов ответа соответствует упомянутому ответу.

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

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

18. Способ по п.17, в котором при определении того, является ли web-страница, запрошенная клиентом, кэшированной полностью в кэше сервера, дополнительно:
формируют web-страницу и
сохраняют web-страницу в кэше в виде цепочки буферов ответа.

19. Способ по п.18, в котором при сохранении в кэше web-страницы вставляют блок подстановки в кэшированную web-страницу.

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

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

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

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

24. Способ по п.17, который дополнительно содержит этап, на котором подают новый динамический контент в запрошенной web-странице, даже если web-страница не сохранена в кэше.

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

26. Машиночитаемый носитель по п.25, который дополнительно содержит понижение возможности кэширования кэшированной web-страницы до осуществляемой только на сервере, так что web-страница не кэшируется на клиенте.

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

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

29. Машиночитаемый носитель по п.25, который дополнительно содержит подачу нового динамического контента в запрошенную web-страницу, даже если web-страница не сохранена в кэше.



 

Похожие патенты:

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

Изобретение относится к печатающей системе, в частности к устройству обеспечения изображения и способу управления этим устройством. .

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

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

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

Изобретение относится к мобильным информационным устройствам. .

Изобретение относится к доступу к информации в компьютерной системе с использованием распознавания и понимания. .

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

Изобретение относится к области систем хранения данных, в частности к области многопротокольных устройств хранения данных. .

Изобретение относится к области вычислительной техники и может быть использовано для построения множества защищенных виртуальных сетей. .

Изобретение относится к вычислительной технике. .

Изобретение относится к системам обработки данных. .

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