RU2373567C2 - Общая модель зависимости для аннулирования элементов кэша - Google Patents

Общая модель зависимости для аннулирования элементов кэша Download PDF

Info

Publication number
RU2373567C2
RU2373567C2 RU2004118830/09A RU2004118830A RU2373567C2 RU 2373567 C2 RU2373567 C2 RU 2373567C2 RU 2004118830/09 A RU2004118830/09 A RU 2004118830/09A RU 2004118830 A RU2004118830 A RU 2004118830A RU 2373567 C2 RU2373567 C2 RU 2373567C2
Authority
RU
Russia
Prior art keywords
cache
dependency
class
user
computer system
Prior art date
Application number
RU2004118830/09A
Other languages
English (en)
Other versions
RU2004118830A (ru
Inventor
Адам Уэйд СМИТ (US)
Адам Уэйд СМИТ
Роберт Майкл ГОВАРД (US)
Роберт Майкл ГОВАРД
Патрик Ю-Кван НГ (US)
Патрик Ю-Кван НГ
Original Assignee
Майкрософт Корпорейшн
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Application filed by Майкрософт Корпорейшн filed Critical Майкрософт Корпорейшн
Publication of RU2004118830A publication Critical patent/RU2004118830A/ru
Application granted granted Critical
Publication of RU2373567C2 publication Critical patent/RU2373567C2/ru

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F12/00Accessing, addressing or allocating within memory systems or architectures
    • G06F12/02Addressing or allocation; Relocation
    • G06F12/08Addressing or allocation; Relocation in hierarchically structured memory systems, e.g. virtual memory systems
    • G06F12/0802Addressing of a memory level in which the access to the desired data or data block requires associative addressing means, e.g. caches
    • G06F12/0806Multiuser, multiprocessor or multiprocessing cache systems
    • G06F12/0815Cache consistency protocols
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F16/00Information retrieval; Database structures therefor; File system structures therefor
    • G06F16/90Details of database functions independent of the retrieved data types
    • G06F16/95Retrieval from the web
    • G06F16/957Browsing optimisation, e.g. caching or content distillation
    • G06F16/9574Browsing optimisation, e.g. caching or content distillation of access to content, e.g. by caching

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Databases & Information Systems (AREA)
  • Data Mining & Analysis (AREA)
  • Information Retrieval, Db Structures And Fs Structures Therefor (AREA)
  • Information Transfer Between Computers (AREA)
  • Memory System Of A Hierarchy Structure (AREA)

Abstract

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

Description

Область изобретения, к которой относится изобретение
Данное изобретение в общем случае относится к управлению кэшированным контентом (информационно значимым содержимым). Более конкретно, данное изобретение относится к расширению классов зависимости кэша, так чтобы разработчики могли создавать собственные зависимости кэша.
Предшествующий уровень техники
В современных компьютерных системах и сетевых системах кэширование данных является эффективным инструментом для ускорения доставки данных тем, кто их запрашивает. В общем случае, кэширование данных обеспечивает хранение часто запрашиваемых данных в местоположении, откуда данные могут быть быстро извлечены. В одном примере данные, которые хранятся в физической памяти компьютерной системы, могут извлекаться быстрее, чем данные, хранящиеся на жестком диске в компьютерной системе. Это происходит частично из-за того, что жесткие диски обычно имеют большее время задержки на извлечение данных по сравнению с физической памятью. Аналогично, к данным, хранящимся на жестком диске или в памяти в серверной компьютерной системе, можно осуществлять доступ более эффективно, чем к данным, хранящимся в удаленной базе данных. Дополнительно, использование кэшируемых данных может уменьшить количество вычислений, необходимых для генерации контента для доставки на запрашивающую клиентскую компьютерную систему.
Современные сети облегчили возможность широкого перемещения цифровой информации между различными местоположениями. Одним из способов сделать данные доступными для транспортировки является создание статического файла, такого как файл HTML (языка гипертекстовой разметки), который может загружаться с сервера в клиентскую компьютерную систему, где его можно просматривать. Статические файлы могут кэшироваться в различных местах, которые включают в себя серверную компьютерную систему, региональную базу данных, или даже локально в клиентской компьютерной системе. Когда статические файлы компьютерной системы хранятся в клиентской компьютерной системе, извлечение и отображение с помощью клиентской компьютерной системы является, для всех практических целей, мгновенным. Даже когда статические файлы хранятся непосредственно на серверной компьютерной системе, связанной с клиентской компьютерной системой (обычно известно, как кэширование при выводе), извлечение кэшированного контента может происходить относительно быстро. Дополнительно, из-за своего статического характера, статический файл может быть кэширован на длительный период времени, по существу неопределенно долго.
К сожалению, статические файлы не могут включать в себя ни контент реального масштаба времени, ни индивидуально конфигурируемый контент. Часто бывает необходимо предоставить контент, который изменяется периодически или который формируется на основе вычислений или обработки другого контента. Хотя такой контент все равно можно кэшировать, кэшированные значения контента являются действительными только в течение ограниченного промежутка времени. Таким образом, кэш должен обновляться для обеспечения действительности данных.
Одна из технологий, которая помогает Web-разработчикам в создании Web-страниц и сайтов, - это использование скриптов (программ на макроязыке) или модульных частей компьютерной рабочей программы, которые выполняются на сервере Web-страниц, таком как, например, информационный сервер Интернет. Скрипты можно внедрять среди других тэгов (неотображаемых элементов гипертекстовой разметки) HTML для создания Web-страниц, которые являются динамическими и настраиваемыми. Также, как можно вызывать объекты в программах, таких как программы на языках программирования Visual Basic, JavaScript и C#, те же самые объекты можно вызывать в скриптах, которые основаны на этих и других языках.
Класс является объектом в инфраструктуре программирования, такой как инфраструктура ASP.NET. Инфраструктура ASP.NET содержит тысячи классов, которые разработчики Web-страниц могут использовать для разработки Web-страниц. Таким же образом, как обращаются к файлу через каталожный путь, доступ к классам можно осуществлять с помощью обращения к особому пространству имен. Например, обращение к пространству имен System.WinForms.Form обеспечивает указание местоположения определенного класса. Классы могут быть связаны со свойствами, событиями и методами. Свойство можно интерпретировать, как присваивание значения переменной или установки в соответствующем классе (например, x = 5). Событие - это флажок, который активируют при возникновении данного события. Событие может считываться другими классами или другими приложениями для вызова некоторого действия, которое должно быть выполнено. Метод обеспечивает средство для вызова функциональных возможностей соответствующего класса для выполнения некоторого действия (например, вывода данных на устройство отображения). Метод определяет, каким образом функциональные возможности предоставляются внешним компонентам.
Для облегчения кэширования контента и, следовательно, для повышения производительности сервера Web-страниц инфраструктура программирования может включать в себя классы для извлечения данных из различных местоположений, например, из файлов, баз данных и Web-услуг, и классы для управления данными посредством различных операций. В некоторых средах серверная компьютерная система Web-страниц с помощью доступа к этим классам (например, сервер ASP (технология активных страниц сервера)) может создавать и сохранять код HTML, основанный на контенте режима реального времени, который подлежит посылке клиентской компьютерной системе по сценарию кэширования при выводе. В других средах серверная компьютерная система Web-страницы может кэшировать контент, такой как файл расширяемого языка разметки XML, локально в серверной компьютерной системе Web-страниц, так что нет необходимости извлекать или повторно вычислять контент каждый раз, когда требуется Web-страница, которая должна включать в себя этот контент.
Некоторые инфраструктуры программирования позволяют Web-разработчикам создавать такие команды, которые, при их исполнении, вызывают сохранение контента в кэше. Например, для помещения элемента в кэш может выполняться следующая команда: Cach.Insert([ключ], [значение], [зависимость]), где ключ - это ссылочный идентификатор элемента кэша, значение - это значение (или контент), помещаемое в элемент кэша, и зависимость - это необязательный параметр, который определяет, когда значение для данного ключа должно быть удалено из кэша. Зависимость является экземпляром класса, например класса CacheDependency, который может использоваться для предписания значению кэша быть зависимым от возникновения конкретного события.
Некоторые инфраструктуры программирования поддерживают зависимости кэша, которые приводят к зависимости кэшированного значения или от времени, или от файла, или от ключа. Зависимость кэша от времени вызывает удаление элемента, связанного с заданной зависимостью, после истечения заданного периода времени. Например, команда Cache.Insert может быть реализована следующим образом для того, чтобы получить зависимость данных от времени:
Cache.Insert(strCacheKey, dataset, nothing, DateTime.Now.AddMinutes(60), TimeSpan.Zero, CacheItemPriority.High).
Более конкретно, команда DateTime.Now.AddMinutes(60) вызывает удаление элемента в кэше через каждые 60 минут. Использование зависимости кэша от времени, которому задано слишком малое значение, может привести к слишком частой очистке кэша и дополнительным издержкам при частой выборке данных из базы данных или издержкам вычисления данных, которые подлежат сохранению в кэше. Если значение времени установлено слишком большим, то существует риск, что хранящиеся в кэше данные будут недействительными, когда их доставят запрашивающей клиентской компьютерной системе.
Команда Cache.Insert может также использоваться для реализации зависимости кэша от файла, которая приводит к удалению элемента кэша, если имеет место изменение в конкретном файле. Дополнительно, команда Cache.Insert может использоваться для реализации зависимости от ключа, которая вызывает очистку одного или более элементов кэша, когда изменяется некоторое другое хранящееся в памяти значение кэша. Используя зависимость от ключа, изменение одного значения кэша может вызвать удаление из кэша множества зависимых значений кэша.
Хотя три описанные выше зависимости кэша от времени, от файла и от ключа являются полезными для сохранения «свежими» хранящихся в кэше значений, классы, которые реализуют эти зависимости, обычно не допускают расширения. Таким образом, Web-разработчики обычно не имеют возможности предписать элементу кэша быть зависимым от других типов событий. Это препятствует использованию различных других типов зависимостей кэша, которые могут сделать управление кэшем более эффективным. Соответственно, было бы целесообразно создать механизм для расширения типов зависимостей, которые могут использоваться для аннулирования элементов кэша.
СУЩНОСТЬ ИЗОБРЕТЕНИЯ
Описанные выше проблемы предшествующего уровня техники преодолеваются с помощью принципов настоящего изобретения, которые ориентированы на способы, системы, компьютерные программные продукты для расширения классов зависимости кэша так, чтобы разработчики могли создавать свои собственные (пользовательские) зависимости кэша. Серверная компьютерная система (которая, например, включает в себя сервер Web-страниц) осуществляет доступ к расширяемому базовому классу зависимости кэша и из расширяемого базового класса зависимости кэша создает в виде производного класса пользовательскую зависимость кэша. Пользовательская зависимость кэша может, например, предписать элементу кэша быть зависимым от изменения в таблице базы данных (например, в таблице SQL (языка структурированных запросов)) или от Web-услуги.
Пользовательская зависимость кэша может включать в себя составную зависимость, например, когда элемент кэша зависит от некоторого количества событий. В некоторых вариантах осуществления функциональные возможности пользовательской зависимости кэша подменяют собой функциональные возможности расширяемого базового класса зависимости кэша. Расширяемый базовый класс зависимости кэша может включать в себя метод уведомления об изменении, относящемся к зависимости, который осуществляет мониторинг события (например, изменения в таблице базы данных), и уведомляет серверную компьютерную систему, когда это событие происходит. Расширяемый базовый класс зависимости кэша может также включать в себя метод освобождения ресурсов при возникновении события зависимости, который освобождает ресурсы, когда элемент кэша удаляют из кэша.
Серверная компьютерная система осуществляет доступ к контенту, например, базы данных или Web-услуги, который нужно доставить клиентской компьютерной системе. Серверная компьютерная система создает элемент кэша, который связывает пользовательскую зависимость кэша с контентом, к которому осуществлен доступ. Серверная компьютерная система помещает элемент кэша в кэш таким образом, чтобы действительность этого элемента кэша (и, таким образом, также контента, к которому осуществлен доступ) зависела от пользовательской зависимости. Серверная компьютерная система может помещать элемент кэша в кэш, используя метод Cache.Insert, который определяет зависимость, которая является экземпляром пользовательской зависимости кэша.
Элемент кэша может быть сделан недействительным (аннулирован), основываясь на пользовательской зависимости кэша. Серверная компьютерная система (которая, например, включает в себя сервер Web-страниц) принимает уведомление о том, что произошло отслеживаемое событие. Данное уведомление может прийти от метода уведомления об изменении, относящемся к зависимости, который был исполнен в результате создания пользовательской зависимости кэша и который следит за возникновением события, связанного с этой пользовательской зависимостью кэша. В ответ на уведомление серверная компьютерная система аннулирует (и удаляет) элемент кэша. Серверная компьютерная система вызывает метод освобождения ресурсов при возникновении события зависимости, освобождая любые ресурсы, используемые данным элементом кэша.
Дополнительные признаки и преимущества данного изобретения будут сформулированы в последующем описании и частично будут очевидны из данного описания, или они могут быть изучены с помощью воплощения данного изобретения на практике. Признаки и преимущества данного изобретения могут быть поняты и получены посредством инструментальных средств и их комбинаций, конкретно указанных в прилагаемой формуле изобретения.
ПЕРЕЧЕНЬ ФИГУР ЧЕРТЕЖЕЙ
Для описания способа, с помощью которого приведенные выше и другие преимущества и признаки данного изобретения могут быть получены, более подробное описание изобретения, кратко описанного выше, будет представлено с помощью ссылки на конкретные варианты его осуществления, которые показаны на прилагаемых чертежах. Следует понимать, что эти чертежи изображают только примерные варианты осуществления изобретения, и поэтому они не должны рассматриваться как ограничивающие его объему, поэтому данное изобретение будет описано и объяснено с дополнительными конкретными специфическими особенностями и подробностями с помощью сопроводительных чертежей, на которых:
Фиг.1 - пример сервера Web-страниц, реализующего создание скриптов на стороне сервера и пользовательские зависимости кэша.
Фиг.2 - пример последовательности операций, иллюстрирующий один из вариантов осуществления способа для предписания элементу кэша быть зависимым от пользовательской зависимости.
Фиг.3 - пример последовательности операций, иллюстрирующий один из вариантов осуществления способа удаления элементов кэша на основе пользовательской зависимости для кэша.
Фиг.4 - схематическое представление соответствующей среды, в которой могут использоваться аспекты настоящего изобретения.
ПОДРОБНОЕ ОПИСАНИЕ ПРЕДПОЧТИТЕЛЬНЫХ ВАРИАНТОВ ОСУЩЕСТВЛЕНИЯ
Настоящее изобретение распространяется на системы, способы и компьютерные программные продукты для расширения классов зависимости кэша таким образом, чтобы пользовательские зависимости кэша могли создаваться разработчиками. Варианты осуществления настоящего изобретения совершенствуют зависимости кэша до расширяемой формы так, чтобы разработчики могли разрабатывать свои собственные пользовательские зависимости кэша. Серверная компьютерная система (которая, например, включает в себя сервер Web-страниц) осуществляет доступ к расширяемому базовому классу CacheDependency, из которого могут быть созданы другие пользовательские классы CacheDependency в качестве производных классов. Пользовательские классы CacheDependency, среди прочего, могут использовать функциональные возможности управления кэшем расширяемого базового класса CacheDependency. Создавая пользовательский класс CacheDependency, который является производным от расширяемого базового класса CacheDependency, от разработчика требуется лишь небольшой объем знаний, если таковые вообще требуются, в отношении того, каким образом реализован расширяемый базовый класс CacheDependency, для использования значимых функциональных возможностей особенностей расширяемого базового класса CacheDependency. Расширяемый базовый класс CacheDependency скрывает от разработчика детали реализации.
Дополнительно, разработчик может осуществлять доступ к методам расширяемого базового класса CacheDependency, которые могут обеспечивать синхронизацию кэша и управление ресурсами кэша. Дополнительно, расширяемый базовый класс CacheDependency может обеспечивать обратную совместимость таким образом, чтобы существующие API (интерфейсы прикладного программирования) могли использоваться с расширяемым базовым классом CacheDependency и любыми классами, производными от него. Примеры таких API включают в себя Cache.Insert, Cache.Add и BasePartialCachingControl.Dependency. Дополнительно, реализация пользовательских зависимостей кэша, полученных из расширяемого базового класса CacheDependency в качестве производных классов, освобождает разработчиков от необходимости определять свойство StartTime для сигнализации о том, когда должен начаться мониторинг кэша. Хотя разработчики могут свободно реализовать это свойство, оно не требуется.
Расширяемый базовый класс CacheDependency включает в себя два дополнительных метода, которые открыты для общего доступа, так что разработчики пользовательских классов CacheDependency могут вызывать функциональные возможности очистки, соответствующие расширяемому базовому классу CacheDependency. Первый метод - это метод NotifyDependencyChanged. Этот метод вызывают классы, которые являются производными от расширяемого базового класса CacheDependency, для информирования расширяемого класса CacheDependency о том, что зависимый элемент изменился. Второй новый метод - это метод DependencyDispose. Этот метод - виртуальный метод, который обеспечивает очистку области памяти, реализуемую специфическим для производного класса образом. Более конкретно, этот метод обеспечивает область памяти для команд, которые обычно располагались в методе освобождения ресурсов расширяемого базового класса CacheDependency, а не для пользовательского класса CacheDependency. Таким образом ресурсы, используемые пользовательским классом CacheDependency, могут освобождаться для использования другими модулями, имеющими потребность в доступе к этим ресурсам.
Способ NotifyDependencyChanged может быть вызван пользовательским классом CacheDependency, который зависит от расширяемого базового класса CacheDependency. Пользовательский класс CacheDependency может таким образом предписывать элементу кэша быть зависимым от изменений в базе данных, от данных Web-услуги или от любой другой причины. Таким путем кэш может распознавать ключ недействительного элемента кэша и удалять данный ключ (и соответствующий контент) из кэша.
В одном иллюстративном примере разработчик создает пользовательский класс “SqlCacheDependency”, который является производным от расширяемого базового класса CachDependency, для опроса базы данных SQL с целью определения того, были ли сделаны изменения в этой базе данных. SqlCacheDependency является производным от расширяемого базового класса CacheDependency, который существует в пределах инфраструктуры программирования. Таким образом, класс SqlCacheDependency может вызывать метод NotifyDependencyChanged таким образом, чтобы серверная компьютерная система удаляла зависимый элемент кэша.
Используя один из вариантов осуществления изобретения, экземпляр пользовательского класса CacheDependency может быть реализован, используя следующие команды:
10 If (Cache [“Product”] == null {
20 SqlConnection Connection = new SqlConnection ([детали соединения]);
30 SqlDataAdapter ds = new SqlDataAdapter (“Product_GetProducts”, connection);
40 SqlCacheDependency dep = new SqlCacheDependency (“NorthWind”, “Products”);
50 Cache.Insert(“Product”, ds, dep);
}
В строке 10 приведенной выше программы проверяют, находится ли элемент «Product» в кэше. Если элемент не находится в кэше, то выполняют функции в операторе «если». В строке 20 устанавливают соединение с базой данных, откуда контент должен извлекаться. В строке 30 извлекают данные из базы данных, используя метод «Product_GetProducts», и сохраняют данные в переменной «ds». В строке 40 переменную «dep» назначают в качестве зависимости от таблицы «Products» в базе данных «NorthWind». Эта зависимость является экземпляром пользовательского класса CacheDependcy, который является производным от расширяемого базового класса CacheDependency. Затем в строке 50 выполняют размещение данных переменной «ds» в элементе кэша, на который ссылается ключ «Product», так чтобы этот элемент кэша зависел от «dep».
В этом примере SqlCacheDependency является пользовательской зависимостью кэша, являющейся производным классом от расширяемого базового класса CacheDependency.
Когда класс, являющийся производным от расширяемого базового класса CacheDependency, используется в качестве зависимости, серверная компьютерная система обрабатывает этот класс так, как будто он является экземпляром расширяемого класса CacheDependency. Соответственно, серверная компьютерная система способна реагировать на режимы поведения, аналогичные режимам поведения, характерным для расширяемого базового класса CacheDependency, хотя внутренним образом производный класс может реализовывать свои собственные уникальные функциональные возможности, такие как уведомление, когда запрос к базе данных изменяет ее. Пользовательский класс CacheDependency, в этом случае SqlCacheDependency, подменяет любые методы расширяемого базового класса CacheDependency, необходимые для достижения требуемых функциональных возможностей. В этом примере, когда SqlCacheDependency уведомляют об изменении базы данных при запросе к ней, он вызывает метод base.Notify.DependencyChanged, который приводит к удалению серверной компьютерной системой элемента кэша, на который ссылается ключ «Product».
Хотя этот пример был описан в терминах зависимости от изменения базы данных, важно помнить, что возможности расширения расширяемого базового класса CacheDependency позволяют создавать фактически любую зависимость кэша, которая может быть задумана Web-разработчиком. С помощью расширяемой модели Web-разработчик может создавать любую пользовательскую зависимость, которая включает в себя составные зависимости, основанные на двух или больше зависимостях. Например, элемент кэша может зависеть и от файла, и от таблицы SQL. Следующие команды показывают реализацию составной зависимости.
70 if (Cache [“Product-List”] == null {
80 SqlConnection Connection = new SqlConnection ([детали соединения]);
90 SqlDataAdapter ds = new SqlDataAdapter (“Product_GetProducts”, connection);
100 SqlCacheDependency sqlDep = new SqlCacheDependency (“NorthWind”, “Products”);
120 CachDependency dep = new AggregateCacheDependency(Server.MapPath(“sales.xml”), sqlDep);
130 Cache.Insert(“Product-List, ds, dep);
}
Этот код подобен коду приведенных выше строк 10-50, за исключением строки 120. Составную зависимость кэша реализуют с помощью производного класса CachDependency с именем AggregateCacheDependency. Он может использоваться для предписания элементам кэша быть зависимыми и от файла (sales.xml), и от пользовательского класса SqlCacheDependency, который является производимым от расширяемого базового класса CacheDependency. Классы, являющиеся производными от расширяемого базового класса CacheDependency, могут также обеспечивать дополнительные пользовательские функциональные возможности. Т.е. производный класс может быть разработан для обеспечения любых событий, методов и свойств, которые используются для реализации пользовательских функциональных возможностей. Например, производный класс может быть разработан для времени начала (например, задания времени, когда CacheDependency должен начать мониторинг изменений), способности поддерживать объединение зависимостей, поддержки механизмов обратного вызова и т.д. Соответственно, разработчик не ограничен событиями, методами и свойствами, присущими расширяемому базовому классу CacheDependency.
На фиг.1 показана соответствующая среда, в которой могут применяться аспекты настоящего изобретения. Фиг.1 изображает сервер 100 и клиент 102, соединенные с сетью с помощью соответствующих линий 121 и 122 связи, соответственно. Сервер 100 и клиент 102 могут осуществлять связь через сеть 104, используя разнообразие протоколов, которые включают в себя протокол передачи гипертекста (HTTP). Сервер 100 может быть сервером ASP.NET, таким что он может доставлять клиенту 102 динамический контент в форме динамических Web-страниц. Сервер включает в себя различные классы и модули, которые включают в себя расширяемый класс 106 CacheDependency и пользовательский класс 114 CacheDependency. Сервер 100 также включает в себя кэш 110, который может быть расположен в физической памяти сервера 100 или в любом другом удобном местоположении.
Сервер 100 соединен с базой данных 112 с помощью линии 123 связи. Базой данных 112 может быть любая соответствующая база данных, такая как, например, база данных SQL или база данных Oracle. В других вариантах осуществления изобретения база данных 112 может представлять услугу XML или любой другой источник данных.
Как показано, клиент 102 запрашивает некоторый контент от сервера 100. Например, клиент 102 может обращаться к URL (унифицированному указателю информационного ресурса), тем самым запрашивая Web-страницу от сервера 100. Сервер 100 проверяет кэш 110 для определения того, находится ли запрашиваемый контент (например, данные Web-страницы) в кэше 110. Если контент не находится в кэше 110, то модуль 108 интерфейса базы данных может запросить контент из базы данных 112. При соответствии запросу контент, такой как, например, контент 132, извлекают возвращают модулю 108 интерфейса базы данных.
Альтернативно, запрашиваемый контент может быть некоторым расчетным значением или результатом некоторой обработки контента, извлеченного из некоторой базы данных, такой как база данных 112. Допустимо, что модуль 108 интерфейса базы данных вычисляет или обрабатывает контент надлежащим образом. Затем контент посылают клиенту 102, например, в одном или более сообщениях HTTP. Контент может также быть добавлен в кэш 110, используя метод Cache.Insert. Метод Cache.Insert задает пользовательскую зависимость, определяемую пользовательским классом 114 CacheDependency, который является производным от расширяемого базового класса 106 CacheDependency.
Пока контент остается в кэше 110, его можно более эффективно доставить любому клиенту, запрашивающему этот контент. Контент остается в кэше 110 до тех пор, пока метод, такой как метод NotifyDependencyChanged, не будет вызван пользовательским классом 114 CacheDependency. Данный контент удаляют из кэша при вызове метода NotifyDependencyChanged. Для последующих запросов клиента в отношении контента потребуется, чтобы этот контент был повторно извлечен из базы данных 112 и/или повторно рассчитано модулем 108 интерфейса базы данных.
Пользовательский класс 114 CacheDependency может вызывать очистку кэша 110, когда имеет место изменение в базе данных 112. В этом примере, хотя извлечение данных из базы данных 112 может быть ресурсоемким, опрос базы данных 112 на предмет изменений, с другой стороны, использует меньше ресурсов. База данных 112 может содержать таблицы базы данных, которые хранят информацию в базе данных 112, такие как таблица 116 базы данных. Другая таблица 117 базы данных может дополнительно содержать флаговый элемент 118, который служит индикатором того, были ли сделаны изменения в информации в таблице 116 базы данных. Таблица 117 базы данных может содержать флажки для других таблиц в базе данных, которые имеют пользовательские зависимости. В одном из вариантов осуществления флаговый элемент 118 может быть инкрементным так, что каждое изменение в таблице 116 базы данных вызывает инкрементное приращение значения флагового элемента 118. Пользовательский класс 114 CacheDependency может быть спроектирован для удаления элементов кэша, когда обнаружено увеличение флагового элемента 118.
На Фиг.2 показана последовательность операций, иллюстрирующая способ размещения элемента кэша, который имеет зависимость. Способ по фиг.2 включает в себя этап осуществления доступа к расширяемому базовому классу CacheDependency (этап 202). Этап 202 может включать в себя осуществление доступа серверной компьютерной системы к расширяемому базовому классу CacheDependency. Например, сервер 100 может осуществлять доступ к расширяемому классу 106 CacheDependency. Сервер 100 может осуществлять доступ к классу 106 CacheDependency в результате выполнения команд, разработанных разработчиком Web-страниц, другим разработчиком программного обеспечения или как часть некоторого модуля программы.
Способ на фиг.2 включает в себя создание пользовательского класса CacheDependency в качестве производного класса от расширяемого базового класса CacheDependency (действие 204). Действие 204 может включать в себя создание серверной компьютерной системой пользовательского класса CacheDependency в качестве производного класса от расширяемого базового класса CacheDependency. Например, сервер 100 может создавать пользовательскую зависимость 114 кэша в качестве производного класса от расширяемого класса 106 CacheDependency. Сервер 100 может создать пользовательскую зависимость 114 кэша в качестве производного класса от в результате выполнения команд, разработанных разработчиком Web-страниц, разработчиком программного обеспечения или как часть некоторого модуля программы, для создания пользовательского класса CacheDependency. Сервер 100 может также создать пользовательскую зависимость 114 кэша в качестве производного класса от из множества источников, которые включают в себя, но не в ограничительном смысле, внешний датчик, связанный с компьютером, такой как термометр, который вызывает событие всякий раз, когда условия изменяются; программа спортивного табло, которая вызывает изменение всякий раз, когда счет в игре изменяется; программа управления сетью, которая вызывает событие всякий раз, когда конфигурация сети изменяется (например, когда компьютер добавляют или удаляют из сети); и программа каталога, которая вызывает событие всякий раз, когда изменяется каталог (например, когда индивидуума добавляют или удаляют).
Способ по фиг.2 включает в себя осуществление доступа к контенту (действие 206). Действие 206 может включать в себя осуществление серверной компьютерной системой доступа к контенту, который должен быть включен в Web-страницу для доставки на клиентскую компьютерную систему. Например, сервер 100 может осуществлять доступ к контенту, который должен быть включен в Web-страницу, для доставки клиенту 102. Осуществление доступа к контенту может включать в себя создание или обработку этого контента. Доступ к контенту можно осуществить из разнообразных отличающихся местоположений, например, из баз данных и Web-услуг. Например, сервер может осуществлять доступ к данным, хранящимся в базе данных 112. Модуль 108 интерфейса базы данных или другие подходящие модули могут соответствующим образом форматировать данные для включения их в Web-страницу.
Способ по фиг.2 включает в себя действие по созданию элемента кэша, который связан с пользовательским классом CacheDependency (действие 208). Действие 208 может включать в себя создание серверной компьютерной системой элемента кэша, который связан с пользовательским классом CacheDependency. Например, сервер 100 может создавать элемент кэша, который связан с пользовательской зависимостью 114 кэша. Элемент кэша создают в одном варианте осуществления с помощью оператора описания переменной, выполняемого сервером 100 (например, таким как строка 50 из описанных выше команд).
Способ по фиг.2 включает в себя действие по размещению элемента кэша в кэше (действие 210). Действие 210 может включать в себя размещение серверной компьютерной системой элемента кэша в области кэша в серверной компьютерной системе. Например, сервер 100 может помещать элемент кэша в кэш 100. Элемент кэша может быть помещен в кэш таким образом, чтобы действительность элемента кэша (и, таким образом, также кэшированного контента) зависела от пользовательской зависимости. Например, сервер 100 может помещать в кэш 110 элемент кэша, который зависит от зависимости, которая следует из пользовательской зависимости 114 кэша.
На фиг.3 показан способ аннулирования элемента кэша, используя пользовательский класс CacheDependency. Способ по фиг.3 включает в себя действие по мониторингу условий пользовательской зависимости, задаваемых экземпляром пользовательской зависимости кэша (этап 302). Действие 302 может включать в себя осуществляемый серверной компьютерной системой мониторинг условий пользовательской зависимости, задаваемых экземпляром пользовательского класса CacheDependency, реализованного в серверной компьютерной системе. Например, сервер 100 может осуществлять мониторинг условий пользовательской зависимости, заданных экземпляром пользовательского класса 114 CacheDependency. Условием пользовательской зависимости может быть возникновение события, такого как, например, изменение контента базы данных или контента, обеспечиваемого Web-услугой. Например, сервер 100 может отслеживать флаговую элемент 118 для определения изменений в содержимом таблицы 116 базы данных. Когда пользовательский класс 114 CacheDependency связан с составной зависимостью, то может осуществляться мониторинг множества условий пользовательской зависимости.
Способ по фиг.3 включает в себя действие по определению того, выполнено ли условие пользовательской зависимости (действие 304). Действие 304 может включать в себя определение серверной компьютерной системой выполнения условия пользовательской зависимости, связанного с пользовательской зависимостью кэша. Например, сервер 100 может определять, выполнено ли условие пользовательской зависимости, связанное с пользовательским классом 114 CacheDependency. Когда пользовательский класс 114 CacheDependency связан с составной зависимостью, сервер 100 может определять, выполнено ли каждое из условий пользовательской зависимости в множестве условий пользовательской зависимости.
В некоторых вариантах осуществления сервер 100 определяет, выполнено ли условие пользовательской зависимости, сравнивая сохраненный флаговый элемент с существующим флаговым элементом. Например, сервер 100 может сравнивать предварительно извлеченное и сохраненное значение для флагового элемента 118 с текущим значением для флагового элемента 118. Когда флаговый элемент 118 получает приращение, пользовательский класс 114 CacheDependency может сравнивать флаговый элемент 118, находящийся в текущий момент времени в таблице 117 базы данных, с флаговым элементом, который существовал в таблице 117 базы данных в некоторое предыдущее время. Если флаговый элемент 118, находящийся в текущий момент времени в таблице, больше, чем флаговый элемент, который существовал в таблице 117 базы данных в некоторое предыдущее время, то выполнено условие пользовательской зависимости (изменение в содержимом таблицы 116 базы данных).
Когда условие пользовательской зависимости не выполнено («нет» на этапе 304), сервер 100 может снова осуществлять мониторинг условий пользовательской зависимости. Мониторинг в отношении условий пользовательской зависимости может повторяться через заданные интервалы (например, каждые 5 секунд), пока условие или условия пользовательской зависимости не будут выполнены, например, пока не произойдет отслеживаемое событие («да» на действии 304).
Способ по фиг.3 включает в себя действие по индикации того, что условия пользовательской зависимости выполнены (действие 306). Действие 306 может включать в себя метод NotifyDependencyChanged, указывающий серверной компьютерной системе на то, что условия пользовательской зависимости выполнены. Например, метод NotifyDependencyChanged для пользовательского класса 114 CachDependency может уведомлять сервер 100, когда изменилось содержимое таблицы 116 базы данных. Уведомление о том, что условие пользовательской зависимости выполнено, может указывать серверу 100 на то, что элемент кэша должен быть удален.
Способ по фиг.3 включает в себя очистку кэша (действие 308). Действие 308 может включать в себя удаление серверной компьютерной системой элемента кэша в серверной компьютерной системе. Например, сервер 100 может удалить элемент кэша из кэша 110. Элемент кэша может быть удален в ответ на прием уведомления о том, что условия пользовательской зависимости, связанные с пользовательской зависимостью кэша, выполнены. Например, сервер 100 может удалить элемент кэша, зависящий от таблицы 116 базы данных, в ответ на прием уведомления о том, что флаговый элемент 118 был увеличен. Когда элемент кэша удален, компьютерная система 100 может освободить некоторые ресурсы (например, системную память), которые использовались для поддержания данного элемента кэша. Например, серверная компьютерная система 100 может вызывать метод DependencyDispose, связанный с пользовательским классом 114 CachDependency, для освобождения ресурсов для того элемента кэша, который хранил содержимое таблицы 116 базы данных.
Варианты осуществления настоящего изобретения могут содержать компьютер специального или общего назначения, который включает в себя различные компьютерные аппаратные средства, как обсуждается более подробно ниже. Варианты осуществления в рамках объема настоящего изобретения также включают в себя машиночитаемые носители для переноса или хранения машиноисполняемых команд или структур данных, хранящихся на них. Такие машиночитаемые носители могут быть любыми доступными носителями, к которым компьютер общего или специального назначения может осуществить доступ. Для примера, а не в качестве ограничения, такие машиночитаемые носители могут содержать оперативное запоминающее устройство (ОЗУ), постоянное запоминающее устройство (ПЗУ), электрически стираемое постоянное запоминающее устройство (EEPROM), ПЗУ на компакт-диске (CD-ROM) или другое запоминающее устройство на оптическом диске, запоминающее устройство на магнитном диске или другие магнитные запоминающие устройства или любые другие носители, которые могут использоваться для переноса или хранения необходимых средств кода программы в форме машиноисполняемых команд или структур данных, и к которому компьютер общего или специального назначения может осуществить доступ. Когда информация перемещается или предоставляется по сети или другому коммуникационному соединению (проводному, беспроводному или комбинации проводного и беспроводного) на компьютер, то компьютер должным образом интерпретирует такое соединение как машиночитаемый носитель. Таким образом, корректным будет любое такое соединение называть машиночитаемым носителем. Машиночитаемым носители должны также включать в себя комбинации приведенных выше носителей. Машиноисполняемые команды содержат, например, команды и данные, которые предписывают компьютер специального назначения, компьютеру общего назначения или специализированному устройству обработки данных выполнять определенные функции или группы функций.
Фиг.4 и последующее обсуждение предназначены для обеспечения краткого, общего описания соответствующей вычислительной среды, в которой может быть реализовано данное изобретение. Хотя это не требуется, данное изобретение будет описано в общем контексте машиноисполняемых команд, таких как модули программ, выполняемые компьютерами в сетевых средах. В общем случае модули программ включают в себя процедуры, программы, объекты, компоненты, структуры данных и т.д., которые выполняют конкретные задания или воплощают определенные абстрактные типы данных. Машиноисполняемые команды, связанные с ними структуры данных и модули программ представляют примеры средств программного кода для выполнения этапов раскрытых здесь способов. Конкретная последовательность таких исполняемых команд или связанных с ними структур данных представляет примеры соответствующих действий для реализации функций, описанных на таких этапах.
Специалисты в данной области техники должны признать, что данное изобретение может применяться в сетевой вычислительной среде со многими типами конфигураций компьютерной системы, которые включают в себя персональные компьютеры, карманные устройства, многопроцессорные системы или программируемую бытовую электронику на основе микропроцессора, сетевые ПК, мини-компьютеры, универсальные компьютеры и т.п. Данное изобретение может также применяться в распределенных вычислительных средах, где задания выполняются локальными и удаленными устройствами обработки данных, которые связаны (проводными каналами связи, беспроводными каналами связи или комбинацией проводных и беспроводных каналов связи) через сеть связи. В распределенной вычислительной среде модули программ могут располагаться и в локальных, и в удаленных запоминающих устройствах.
Обращаясь к фиг.4, примерная система для реализации изобретения включает в себя вычислительное устройство общего назначения в форме обычного компьютера 420, который включает в себя процессор 421, системную память 422 и системную шину 423, которая связывает различные системные компоненты, включая системную память 422, с процессором 421. Системная шина 423 может относиться к любому из нескольких типов шинных структур, которые включают в себя шину памяти или контроллер памяти, периферийную шину и локальную шину, используя любую шинную архитектуру из их разнообразия. Системная память включает в себя постоянное запоминающее устройство (ПЗУ) 424 и оперативное запоминающее устройство (ОЗУ) 425. Базовая система ввода-вывода (BIOS) 426, которая содержит основные процедуры, которые помогают перемещать информацию между элементами в пределах компьютера 420, например, во время запуска, может храниться в ПЗУ 424.
Компьютер 420 может также включать в себя накопитель 427 на жестком магнитном диске, предназначенный для считывания и элемента на жесткий магнитный диск 439, магнитный дисковод 428, предназначенный для считывания или элемента на сменный магнитный диск 429, и оптический дисковод 430, предназначенный для считывания или элемента на сменный оптический диск 431, такой как компакт-диск (CD-ROM) или другие оптические носители. Накопитель 427 на жестком магнитном диске, магнитный дисковод 428 и оптический дисковод 430 связаны с системной шиной 423 с помощью интерфейса 432 накопителя на жестком диске, интерфейса 433 магнитного дисковода и интерфейса 434 оптического дисковода, соответственно. Накопители и дисководы и связанные с ними машиночитаемые носители обеспечивают энергонезависимое хранение машиноисполняемых команд, структур данных, модулей программ и других данных для компьютера 420. Хотя описанная примерная среда использует жесткий магнитный диск 439, сменный магнитный диск 429 и сменный оптический диск 431, могут использоваться другие типы машиночитаемых носителей для хранения данных, которые включают в себя магнитные кассеты, платы флэш-памяти, цифровые универсальные диски, картриджи Бернулли, ОЗУ, ПЗУ и т.п.
Средства программного кода содержат один или более модулей программ, которые могут храниться на жестком диске 439, магнитном диске 429, оптическом диске 431, в ПЗУ 424 или ОЗУ 425 и включают в себя операционную систему 435, одну или более прикладных программ 436, другие модули 437 программ и данные 438 программ. Пользователь может вводить команды и информацию в компьютер 420 через клавиатуру 440, устройство 442 позиционирования или другие устройства ввода данных (не показаны), такие как микрофон, джойстик, игровая клавиатура, спутниковая антенна, сканер или подобные им устройства. Эти и другие устройства ввода данных часто подключают к процессору 421 через интерфейс 446 последовательного порта, соединенный с системной шиной 423. Альтернативно, устройства ввода данных могут быть подсоединены с помощью других интерфейсов, таких как параллельный порт, игровой порт или универсальная последовательная шина (USB). Монитор 447 или другое устройство отображения также связано с системной шиной 423 через интерфейс, такой как видеоадаптер 448. В дополнение к монитору, персональные компьютеры обычно включают в себя другие периферийные устройства вывода (не показаны), такие как громкоговорители и принтеры.
Компьютерная система 420 допускает соединения с сетями, такими как, например, компьютерная сеть масштаба предприятия или офиса, внутрикорпоративная сеть (интранет) и/или Интернет. Компьютерная система 420 может обмениваться данными по такой сети с внешними источниками, такими как, например, удаленные компьютерные системы, удаленные приложения и/или удаленные базы данных.
Компьютерная система 420 включает в себя сетевой интерфейс 453, через который компьютерная система 420 принимает данные из внешних источников и/или передает данные к внешним источникам. Как изображено на фиг.4, сетевой интерфейс 453 облегчает обмен данными с удаленной компьютерной системой 483 через линию 451 связи. Линия 451 связи представляет часть сети, а удаленная компьютерная система 483 представляет узел сети. Например, удаленная компьютерная система 483 может поддерживать базу данных, которая обеспечивает контент для Web-страниц, созданных в компьютерной системе 420. С другой стороны, компьютерная система 483 может быть компьютером-сервером, которому требуется контент базы данных, поддерживаемой в компьютерной системе 420.
Аналогично, компьютерная система 420 включает в себя интерфейс 446 последовательного порта, через который компьютерная система 420 принимает данные из внешних источников и/или передает данные к внешним источникам. Интерфейс 446 последовательного порта соединяют с модемом 454, через который компьютерная система 420 принимает данные от внешних источников и/или передает данные к внешним источникам. В свою очередь, модем 454 может быть модемом спецификации интерфейса услуги передачи данных по кабелю («DOCSIS») или модемом цифровых абонентских линий («DSL»), который связан с компьютерной системой 420 через соответствующий интерфейс. Однако, как изображено на фиг.4, интерфейс 446 последовательного порта и модем 454 обеспечивают обмен данными с удаленной компьютерной системой 493 через линию 452 связи. Линия 452 связи представляет часть сети, а удаленная компьютерная система 493 представляет узел сети. Например, удаленная компьютерная система 493 может быть клиентской компьютерной системой, которая запрашивает Web-страницу от компьютерной системы 420. С другой стороны, компьютерная система 493 может быть серверной компьютерной системой, которая обеспечивает передачу Web-страницы на компьютерную систему 420.
Настоящее изобретение может быть воплощено в других конкретных формах не отходя от его сущности или существенных характеристик. Описанные варианты осуществления нужно считать во всех отношениях только иллюстративными, а не ограничительными. Поэтому объем изобретения определяется в соответствии с прилагаемой формулой изобретения, а не в соответствии с предшествующим описанием. Все изменения, которые подпадают под значение и диапазон эквивалентности формулы изобретения, должны находиться в пределах его объема.

Claims (30)

1. Способ, реализуемый в серверной компьютерной системе, которая предоставляет Web-страницы запрашивающим клиентским компьютерным системам, причем эти Web-страницы потенциально включают в себя контент из местоположений, которые являются внешними по отношению к серверной компьютерной системе, данная серверная компьютерная система включает в себя кэш, который хранит части кэшированного контента, предварительно принятого из местоположений, внешних по отношению к серверной компьютерной системе, и предназначенный для обработки элемента кэша, при этом способ содержит следующие действия, согласно которым
осуществляют доступ к расширяемому базовому классу зависимости кэша, из которого в качестве производных от него классов могут быть получены пользовательские классы зависимости кэша, причем расширяемый базовый класс зависимости кэша включает в себя множество наследуемых методов, относящихся к управлению кэшем, которые используются пользовательскими классами зависимости кэша, производными от расширяемого базового класса, для определения действительности одного или более элементов кэша, соответствующих пользовательским зависимостям кэша,
создают пользовательский класс зависимости кэша в качестве производного класса от расширяемого базового класса зависимости кэша и создают пользовательскую зависимость кэша из этого пользовательского класса зависимости кэша в качестве его экземпляра, причем пользовательский класс зависимости кэша наследует упомянутое множество наследуемых методов, относящихся к управлению кэшем, от расширяемого базового класса зависимости кэша, при этом пользовательский класс зависимости кэша также сконфигурирован для реализации дополнительных уникальных функциональных возможностей пользовательской зависимости кэша, которые расширяют упомянутое множество наследуемых методов, относящихся к управлению кэшем, включенных в расширяемый базовый класс зависимости кэша, причем упомянутые уникальные функциональные возможности обеспечивают возможность определения действительности элементов кэша, связанных с пользовательской зависимостью кэша, и обеспечивают выбираемый набор факторов, от которых может зависеть действительность этих элементов кэша,
осуществляют доступ к части кэшированного контента, которую нужно доставить клиентской компьютерной системе,
создают элемент кэша, который связывает пользовательскую зависимость кэша с частью кэшированного контента, к которой осуществлен доступ,
определяют, что элемент кэша является действительным, согласно упомянутому выбираемому набору факторов и
помещают элемент кэша, который определен как действительный, в кэш для доставки в клиентскую компьютерную систему.
2. Способ по п.1, в котором действие по осуществлению доступа к расширяемому базовому классу зависимости кэша содержит действие, согласно которому осуществляют доступ к базовому классу зависимости кэша, который включает в себя метод уведомления об изменении, относящемся к зависимости, так, чтобы классы, являющиеся производными от базового класса зависимости кэша, могли реализовать функциональные возможности очистки, соответствующие базовому классу зависимости кэша, с помощью вызова метода уведомления об изменении, относящемся к зависимости.
3. Способ по п.1, в котором действие по осуществлению доступа к расширяемому базовому классу зависимости кэша содержит действие, согласно которому осуществляют доступ к базовому классу зависимости кэша, который включает в себя метод освобождения ресурсов при возникновении события зависимости, так, чтобы классы, являющиеся производными от базового класса зависимости кэша, могли освобождать ресурсы, занятые элементом кэша, с помощью вызова метода освобождения ресурсов при возникновении события зависимости.
4. Способ по п.1, в котором действие по созданию пользовательского класса зависимости кэша в качестве производного класса от расширяемого базового класса зависимости кэша содержит действие, согласно которому создают пользовательский класс зависимости кэша в качестве производного класса, который может быть реализован для предписания элементу кэша быть зависимым от таблицы базы данных.
5. Способ по п.1, в котором действие по созданию пользовательского класса зависимости кэша в качестве производного класса от расширяемого базового класса зависимости кэша содержит действие, согласно которому создают пользовательский класс зависимости кэша в качестве производного класса, который может быть реализован для предписания элементу кэша быть зависимым от Web-услуги.
6. Способ по п.1, в котором действие по осуществлению доступа к части контента, которую нужно доставить клиентской компьютерной системе, содержит действие, согласно которому осуществляют доступ к части контента, которую должна включать в себя Web-страница.
7. Способ по п.1, в котором действие по осуществлению доступа к части контента, которую нужно доставить клиентской компьютерной системе, содержит действие, согласно которому осуществляют доступ к части контента таблицы базы данных.
8. Способ по п.1, в котором действие по осуществлению доступа к части контента, которую нужно доставить клиентской компьютерной системе, содержит действие, согласно которому осуществляют доступ к части контента Web-услуги.
9. Способ по п.1, в котором действие по созданию элемента кэша, который связывает пользовательскую зависимость с частью контента, к которой осуществлен доступ, содержит действие, согласно которому создают элемент кэша, который предписывает контенту из таблицы базы данных быть зависимым от таблицы базы данных.
10. Способ по п.1, в котором действие по созданию элемента кэша, который связывает пользовательскую зависимость с частью контента, к которой осуществлен доступ, содержит действие, согласно которому создают элемент кэша, который предписывает контенту из таблицы базы данных быть зависимым от составной зависимости, основанной на двух или больше зависимостях.
11. Способ по п.1, в котором действие по созданию элемента кэша, который связывает пользовательскую зависимость с частью контента, к которой осуществлен доступ, содержит действие, согласно которому создают элемент кэша, который предписывает контенту Web-услуги быть зависимым от Web-услуги.
12. Способ по п.1, в котором действие по помещению элемента кэша в кэш содержит действие, согласно которому помещают элемент кэша, который зависит от таблицы базы данных.
13. Способ по п.1, в котором действие по помещению элемента кэша в кэш содержит действие, согласно которому помещают элемент кэша, который зависит от составной зависимости, основанной на двух или больше зависимостях.
14. Способ по п.1, в котором свойство времени начала не обязательно должно быть задано для вызова функциональных возможностей расширяемого базового класса зависимости кэша.
15. Способ, реализуемый в серверной компьютерной системе, которая предоставляет Web-страницы запрашивающим клиентским компьютерным системам, причем эти Web-страницы потенциально включают в себя контент из местоположений, которые являются внешними по отношению к серверной компьютерной системе, данная серверная компьютерная система включает в себя кэш, который хранит части кэшированного контента, предварительно принятого из местоположений, внешних по отношению к серверной компьютерной системе, и предназначенный для удаления недействительного элемента кэша, при этом способ содержит следующие действия, согласно которым
осуществляют мониторинг одного или большего количества условий пользовательской зависимости, связанных с выбираемым набором факторов, от которых может зависеть действительность элементов кэша, причем этот выбираемый набор факторов включен в пользовательскую зависимость кэша, полученную из пользовательского класса зависимости кэша в качестве его экземпляра, при этом пользовательский класс зависимости кэша, который получен в качестве производного класса от расширяемого базового класса зависимости кэша, расширяет множество относящихся к управлению кэшем методов, наследуемых от этого расширяемого базового класса зависимости кэша, для реализации уникальных функциональных возможностей, которые обеспечивают возможность определения действительности элементов кэша и обеспечивают упомянутый выбираемый набор факторов,
определяют, выполнены ли упомянутые одно или большее количество условий пользовательской зависимости,
принимают индикацию того, что упомянутые одно или большее количество условий пользовательской зависимости выполнены,
определяют, что элемент кэша, связанный с упомянутыми условиями пользовательской зависимости, является недействительным, согласно упомянутому выбираемому набору факторов и
удаляют элемент кэша в серверной компьютерной системе в ответ на определение того, что элемент кэша является недействительным.
16. Способ по п.15, в котором действие по мониторингу одного или большего количества условий пользовательской зависимости, связанных с экземпляром пользовательской зависимости кэша, содержит действие, согласно которому осуществляют мониторинг зависимости от таблицы базы данных.
17. Способ по п.15, в котором действие по мониторингу одного или большего количества условий пользовательской зависимости содержит действие, согласно которому осуществляют мониторинг зависимости от Web-услуг.
18. Способ по п.15, в котором действие по мониторингу одного или большего количества условий пользовательской зависимости содержит действие, согласно которому осуществляют мониторинг составной зависимости, основанной на двух или больше зависимостях.
19. Способ по п.15, в котором действие по определению того, выполнены ли упомянутые одно или большее количество условий пользовательской зависимости, содержит действие, согласно которому определяют увеличение флагового элемента.
20. Способ по п.15, в котором действие по определению того, выполнены ли упомянутые одно или большее количество условий пользовательской зависимости, содержит действие, согласно которому определяют, выполнено ли условие зависимости, связанное с составной зависимостью, основанной на двух или больше зависимостях.
21. Способ по п.15, в котором действие по определению того, выполнены ли упомянутые одно или большее количество условий пользовательской зависимости, содержит вызов метода уведомления об изменении, относящемся к зависимости, при появлении некоторого события, задаваемого пользовательской зависимостью кэша.
22. Способ по п.15, в котором действие по приему индикации того, что упомянутые одно или большее количество условий пользовательской зависимости выполнены, содержит действие, согласно которому принимают индикацию от метода уведомления об изменении, относящемся к зависимости, в отношении того, что упомянутые одно или большее количество условий пользовательской зависимости выполнены.
23. Способ по п.15, в котором действие по удалению элемента кэша в серверной компьютерной системе содержит действие, согласно которому удаляют элемент кэша, который зависел от таблицы базы данных.
24. Способ по п.15, в котором действие по удалению элемента кэша в серверной компьютерной системе содержит действие, согласно которому удаляют элемент кэша, который зависел от Web-услуги.
25. Способ по п.15, в котором действие по удалению элемента кэша в серверной компьютерной системе содержит действие, согласно которому удаляют элемент кэша, который зависел от составной зависимости, основанной на двух или больше зависимостях.
26. Способ по п.15, дополнительно содержащий действие, согласно которому освобождают ресурсы, которые использовались для поддержания удаляемого элемента кэша.
27. Способ по п.26, в котором действие по освобождению ресурсов, которые использовались для поддержания удаляемого элемента кэша, содержит действие, согласно которому вызывают метод DependencyDispose, связанный с пользовательской зависимостью кэша.
28. Машиночитаемый носитель для использования в серверной компьютерной системе, которая предоставляет Web-страницы запрашивающим клиентским компьютерным системам, причем эти Web-страницы потенциально включают в себя контент из местоположений, которые являются внешними по отношению к серверной компьютерной системе, данная серверная компьютерная система включает в себя кэш, который хранит части кэшированного контента, предварительно принятого из местоположений, внешних по отношению к серверной компьютерной системе, при этом данный машиночитаемый носитель хранит машиноисполняемые команды, которые при исполнении их процессором предписывают серверной компьютерной системе обрабатывать элемент кэша, посредством
осуществления доступа к расширяемому базовому классу зависимости кэша, из которого в качестве производных от него классов могут быть получены пользовательские классы зависимости кэша, причем расширяемый базовый класс зависимости кэша включает в себя множество наследуемых методов, относящихся к управлению кэшем, которые используются пользовательскими классами зависимости кэша, производными от расширяемого базового класса, для определения действительности одного или более элементов кэша, соответствующих пользовательским зависимостям кэша,
создания пользовательского класса зависимости кэша в качестве производного класса от расширяемого базового класса зависимости кэша и создания пользовательской зависимости кэша из этого пользовательского класса зависимости кэша в качестве его экземпляра, причем пользовательский класс зависимости кэша наследует упомянутое множество наследуемых методов, относящихся к управлению кэшем, от расширяемого базового класса зависимости кэша, при этом пользовательский класс зависимости кэша также сконфигурирован для реализации дополнительных уникальных функциональных возможностей пользовательской зависимости кэша, которые расширяют упомянутое множество наследуемых методов, относящихся к управлению кэшем, включенных в расширяемый базовый класс зависимости кэша, причем упомянутые уникальные функциональные возможности обеспечивают возможность определения действительности элементов кэша, связанных с пользовательской зависимостью кэша, и обеспечивают выбираемый набор факторов, от которых может зависеть действительность этих элементов кэша,
осуществления доступа к части кэшированного контента, которую нужно доставить клиентской компьютерной системе,
создания элемента кэша, который связывает пользовательскую зависимость кэша с частью кэшированного контента, к которой осуществлен доступ,
определения того, что элемент кэша является действительным согласно упомянутому выбираемому набору факторов и
помещения элемента кэша, который определен как действительный, в кэш для доставки в клиентскую компьютерную систему.
29. Машиночитаемый носитель для использования в серверной компьютерной системе, которая предоставляет Web-страницы запрашивающим клиентским компьютерным системам, причем эти Web-страницы потенциально включают в себя контент из местоположений, которые являются внешними по отношению к серверной компьютерной системе, данная серверная компьютерная система включает в себя кэш, который хранит части кэшированного контента, предварительно принятого из местоположений, внешних по отношению к серверной компьютерной системе, при этом данный машиночитаемый носитель хранит машиноисполняемые команды, которые при исполнении их процессором предписывают серверной компьютерной системе удалять недействительный элемент кэша посредством
мониторинга одного или большего количества условий пользовательской зависимости, связанных с выбираемым набором факторов, от которых может зависеть действительность элементов кэша, причем этот выбираемый набор факторов включен в пользовательскую зависимость кэша, полученную из пользовательского класса зависимости кэша в качестве его экземпляра, при этом пользовательский класс зависимости кэша, который получен в качестве производного класса от расширяемого базового класса зависимости кэша, расширяет множество относящихся к управлению кэшем методов, наследуемых от этого расширяемого базового класса зависимости кэша, для реализации уникальных функциональных возможностей, которые обеспечивают возможность определения действительности элементов кэша и обеспечивают упомянутый выбираемый набор факторов,
определения того, выполнены ли упомянутые одно или большее количество условий пользовательской зависимости,
приема индикации того, что упомянутые одно или большее количество условий пользовательской зависимости выполнены,
определения того, что элемент кэша, связанный с упомянутыми условиями пользовательской зависимости, является недействительным согласно упомянутому выбираемому набору факторов и
удаления элемента кэша в серверной компьютерной системе в ответ на определение того, что элемент кэша является недействительным.
30. Серверная компьютерная система Web-страниц, содержащая процессор и один или более машиночитаемых носителей, на которых хранятся кэш и инфраструктура, которая содержит расширяемый базовый класс зависимости кэша, из которого могут быть созданы производные от него пользовательские классы зависимости кэша, при этом расширяемый базовый класс зависимости кэша включает в себя множество наследуемых методов, относящихся к управлению кэшем, которые могут использоваться пользовательскими классами зависимости кэша для определения действительности одного или более элементов кэша, причем каждый из пользовательских классов зависимости кэша расширяет упомянутое множество наследуемых методов, относящихся к управлению кэшем, для реализации дополнительных уникальных функциональных возможностей, которые обеспечивают возможность определения действительности элементов кэша, связанных с пользовательским классом зависимости кэша, и определяет по меньшей мере одно событие, возникновение которого вызовет удаление элемента кэша, содержащегося в кэше, как недействительного.
RU2004118830/09A 2003-06-23 2004-06-22 Общая модель зависимости для аннулирования элементов кэша RU2373567C2 (ru)

Applications Claiming Priority (2)

Application Number Priority Date Filing Date Title
US10/602,122 US7398304B2 (en) 2003-06-23 2003-06-23 General dependency model for invalidating cache entries
US10/602,122 2003-06-23

Publications (2)

Publication Number Publication Date
RU2004118830A RU2004118830A (ru) 2005-12-10
RU2373567C2 true RU2373567C2 (ru) 2009-11-20

Family

ID=33418618

Family Applications (1)

Application Number Title Priority Date Filing Date
RU2004118830/09A RU2373567C2 (ru) 2003-06-23 2004-06-22 Общая модель зависимости для аннулирования элементов кэша

Country Status (10)

Country Link
US (1) US7398304B2 (ru)
EP (1) EP1492024A1 (ru)
JP (1) JP4629371B2 (ru)
KR (1) KR20050000350A (ru)
CN (1) CN100480999C (ru)
AU (1) AU2004202328A1 (ru)
BR (1) BRPI0402416A (ru)
CA (1) CA2471990A1 (ru)
MX (1) MXPA04006189A (ru)
RU (1) RU2373567C2 (ru)

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2754601C1 (ru) * 2020-12-18 2021-09-03 Акционерное Общество "Крафтвэй Корпорэйшн Плс" Способ инкрементального сохранения

Families Citing this family (28)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US7392348B2 (en) * 2003-08-06 2008-06-24 International Business Machines Corporation Method for validating remotely cached dynamic content web pages
US7818506B1 (en) * 2002-12-13 2010-10-19 Vignette Software Llc Method and system for cache management
US7188216B1 (en) * 2002-12-13 2007-03-06 Vignette Corporation Method and system for an extensible caching framework
US8380932B1 (en) 2002-12-13 2013-02-19 Open Text S.A. Contextual regeneration of pages for web-based applications
US8463998B1 (en) 2002-12-13 2013-06-11 Open Text S.A. System and method for managing page variations in a page delivery cache
US8312222B1 (en) 2002-12-13 2012-11-13 Open Text, S.A. Event-driven regeneration of pages for web-based applications
US8166114B2 (en) 2006-02-21 2012-04-24 Strangeloop Networks, Inc. Asynchronous context data messaging
US8037127B2 (en) 2006-02-21 2011-10-11 Strangeloop Networks, Inc. In-line network device for storing application-layer data, processing instructions, and/or rule sets
US20090254707A1 (en) * 2008-04-08 2009-10-08 Strangeloop Networks Inc. Partial Content Caching
US9906620B2 (en) * 2008-05-05 2018-02-27 Radware, Ltd. Extensible, asynchronous, centralized analysis and optimization of server responses to client requests
US8041893B1 (en) 2008-09-09 2011-10-18 Vignette Software Llc System and method for managing large filesystem-based caches
US8868838B1 (en) * 2008-11-21 2014-10-21 Nvidia Corporation Multi-class data cache policies
US9549039B2 (en) 2010-05-28 2017-01-17 Radware Ltd. Accelerating HTTP responses in a client/server environment
US20110060812A1 (en) * 2009-09-10 2011-03-10 Level 3 Communications, Llc Cache server with extensible programming framework
US20110231482A1 (en) * 2010-03-22 2011-09-22 Strangeloop Networks Inc. Automated Optimization Based On Determination Of Website Usage Scenario
US20120102134A1 (en) * 2010-10-21 2012-04-26 International Business Machines Corporation Cache sharing among branch proxy servers via a master proxy server at a data center
WO2012101585A1 (en) 2011-01-28 2012-08-02 Strangeloop Networks, Inc. Prioritized image rendering based on position within a web page
US10157236B2 (en) 2011-05-23 2018-12-18 Radware, Ltd. Optimized rendering of dynamic content
US20120331410A1 (en) * 2011-06-27 2012-12-27 Fujitsu Technology Solutions Intellectual Property Gmbh Methods and systems for designing it services
WO2013038320A1 (en) * 2011-09-16 2013-03-21 Strangeloop Networks, Inc. Mobile resource accelerator
US10984175B2 (en) 2013-08-09 2021-04-20 Yottaa Inc. Systems and methods for dynamically modifying a requested web page from a server for presentation at a client
US9870349B2 (en) 2013-09-20 2018-01-16 Yottaa Inc. Systems and methods for managing loading priority or sequencing of fragments of a web object
US20160125029A1 (en) 2014-10-31 2016-05-05 InsightSoftware.com International Intelligent caching for enterprise resource planning reporting
SG11201803730TA (en) * 2015-11-04 2018-06-28 Samsung Electronics Co Ltd Systems and methods for implementing coherent memory in a multiprocessor system
US10922236B2 (en) * 2019-04-04 2021-02-16 Advanced New Technologies Co., Ltd. Cascade cache refreshing
US11269784B1 (en) * 2019-06-27 2022-03-08 Amazon Technologies, Inc. System and methods for efficient caching in a distributed environment
CN111787340A (zh) * 2020-05-25 2020-10-16 天津车之家数据信息技术有限公司 一种网络直播系统和方法
CN113254055B (zh) * 2021-06-29 2021-09-28 中航信移动科技有限公司 无效依赖的删除方法、装置、计算机设备及存储介质

Family Cites Families (13)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO1997046956A1 (en) * 1996-06-07 1997-12-11 At & T Corp. Internet file system
US5897634A (en) * 1997-05-09 1999-04-27 International Business Machines Corporation Optimized caching of SQL data in an object server system
US6026413A (en) * 1997-08-01 2000-02-15 International Business Machines Corporation Determining how changes to underlying data affect cached objects
US6493720B1 (en) * 1998-01-26 2002-12-10 International Business Machines Corporation Method and system for synchronization of metadata in an information catalog
US6185598B1 (en) * 1998-02-10 2001-02-06 Digital Island, Inc. Optimized network resource location
EP0959416A3 (en) 1998-05-08 2005-08-10 International Business Machines Corporation Using database query technology for message subscriptions in messaging systems
US6185608B1 (en) * 1998-06-12 2001-02-06 International Business Machines Corporation Caching dynamic web pages
US6606663B1 (en) * 1998-09-29 2003-08-12 Openwave Systems Inc. Method and apparatus for caching credentials in proxy servers for wireless user agents
US6304879B1 (en) * 1998-11-25 2001-10-16 Microsoft Corporation Dynamic data cache for object-oriented computing environments
US6405191B1 (en) * 1999-07-21 2002-06-11 Oracle Corporation Content based publish-and-subscribe system integrated in a relational database system
US7096418B1 (en) * 2000-02-02 2006-08-22 Persistence Software, Inc. Dynamic web page cache
KR100372582B1 (ko) 2000-02-23 2003-02-17 가부시키가이샤 히타치세이사쿠쇼 데이터처리방법 및 시스템 및 그 처리프로그램을 기록한계산기판독이 가능한 기록매체
US6996584B2 (en) * 2002-05-14 2006-02-07 Pervasive Software, Inc. System and method of maintaining functional client side data cache coherence

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
JIM CHALLENGER et al. A Scalable System for Consistently Caching Dynamic Web Data, 1999, найденная по адресу URL: http://www.research.ibm.com/people/i/iyengar/02D-03.PDF, с.1-10. *

Cited By (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
RU2754601C1 (ru) * 2020-12-18 2021-09-03 Акционерное Общество "Крафтвэй Корпорэйшн Плс" Способ инкрементального сохранения

Also Published As

Publication number Publication date
AU2004202328A2 (en) 2005-01-13
RU2004118830A (ru) 2005-12-10
BRPI0402416A (pt) 2005-02-09
JP2005018773A (ja) 2005-01-20
KR20050000350A (ko) 2005-01-03
MXPA04006189A (es) 2005-04-19
US20050015463A1 (en) 2005-01-20
EP1492024A1 (en) 2004-12-29
AU2004202328A1 (en) 2005-01-13
CN100480999C (zh) 2009-04-22
CA2471990A1 (en) 2004-12-23
US7398304B2 (en) 2008-07-08
JP4629371B2 (ja) 2011-02-09
CN1573690A (zh) 2005-02-02

Similar Documents

Publication Publication Date Title
RU2373567C2 (ru) Общая модель зависимости для аннулирования элементов кэша
JP5172714B2 (ja) Rssデータ処理オブジェクト
EP1492027B1 (en) Registering for and retrieving database table change information that can be used to invalidate cache entries
US20140359043A1 (en) High performance, distributed, shared, data grid for distributed java virtual machine runtime artifacts
US20110035553A1 (en) Method and system for cache management
US7873625B2 (en) File indexing framework and symbolic name maintenance framework
JP6185917B2 (ja) クラスタにおける効率的なキャッシュ管理
US20080263052A1 (en) Multi-format centralized distribution of localized resources for multiple products
JP2006252539A (ja) システムデータインターフェース、関連アーキテクチャ、印刷システムデータインターフェース、および関連印刷システムアーキテクチャ
US7765196B2 (en) Method and apparatus for web cache using database triggers
US20020161894A1 (en) Mechanism to cache references to Java RMI remote objects implementing the unreferenced interface
CN112433921A (zh) 用于动态埋点的方法及设备
US11777810B2 (en) Status sharing in a resilience framework
US20080163264A1 (en) Directory Service that Provides Information from a Plurality of Disparate Data Sources
JP2007213235A (ja) ネームサービスキャッシュ装置、及びネームサービスキャッシュ方法
JP2000137689A (ja) 共用データキャッシュ処理方法及びその実施装置並びにその処理プログラムを記録した媒体
CN115398878A (zh) 用于在远程地址空间中聚合数据的系统和方法
US7269610B2 (en) System and method to observe user behavior and perform actions introspectable objects
KR101265805B1 (ko) 캐쉬 엔트리 유효성 판정 방법, 무효의 캐쉬 엔트리 퍼지 방법, 및 하나 이상의 컴퓨터 판독가능 저장 매체
US20090313628A1 (en) Dynamically batching remote object model commands
CN113407504B (zh) 一种数据处理方法、用户空间文件系统以及存储介质
JP2005503600A (ja) インターネット上でダイナミック・ページ・ビルダでメッセージ・パブリッシングを提供するための方法およびシステム
JP2009193435A (ja) 情報サービス検索システム、巡回収集方法、及び情報サービス巡回収集プログラム
Carneiro Jr et al. Optimizing Your APIs
CN116166911A (zh) 页面加载方法、装置、存储介质及电子设备

Legal Events

Date Code Title Description
MM4A The patent is invalid due to non-payment of fees

Effective date: 20130623