DE112013004098B4 - Verwalten eines Daten-Cache für ein Computersystem - Google Patents

Verwalten eines Daten-Cache für ein Computersystem Download PDF

Info

Publication number
DE112013004098B4
DE112013004098B4 DE112013004098.0T DE112013004098T DE112013004098B4 DE 112013004098 B4 DE112013004098 B4 DE 112013004098B4 DE 112013004098 T DE112013004098 T DE 112013004098T DE 112013004098 B4 DE112013004098 B4 DE 112013004098B4
Authority
DE
Germany
Prior art keywords
response
data resource
request
data
requests
Prior art date
Legal status (The legal status 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 status listed.)
Active
Application number
DE112013004098.0T
Other languages
English (en)
Other versions
DE112013004098T5 (de
Inventor
c/o IBM United Kingdom Ltd. Hayton Stuart John
c/o IBM India Chetlur Malolan
Zygmunt Anthony c/o IBM United Kingdom L Lozinski
c/o IBM United Kingdom L Paice Susan Patricia
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
International Business Machines Corp
Original Assignee
International Business Machines Corp
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 International Business Machines Corp filed Critical International Business Machines Corp
Publication of DE112013004098T5 publication Critical patent/DE112013004098T5/de
Application granted granted Critical
Publication of DE112013004098B4 publication Critical patent/DE112013004098B4/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/50Network services
    • H04L67/56Provisioning of proxy services
    • H04L67/568Storing data temporarily at an intermediate stage, e.g. caching
    • 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
    • HELECTRICITY
    • H04ELECTRIC COMMUNICATION TECHNIQUE
    • H04LTRANSMISSION OF DIGITAL INFORMATION, e.g. TELEGRAPHIC COMMUNICATION
    • H04L67/00Network arrangements or protocols for supporting network services or applications
    • H04L67/01Protocols
    • H04L67/02Protocols based on web technology, e.g. hypertext transfer protocol [HTTP]

Landscapes

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

Abstract

Verfahren zum Verwalten eines Daten-Cache für ein Computersystem (100), wobei das Verfahren die Schritte aufweist:Verwalten eines Cache (112) für eine oder mehrere Daten-Ressourcen, die durch einen Client-Prozess angefordert werden;in Reaktion auf eine Anforderung einer im Cache gespeicherten Daten-Ressource von dem Client-Prozess:Senden einer ersten Anforderung der Daten-Ressource an einen Server-Prozess; undSenden einer zweiten Anforderung einer Angabe, ob die Daten-Ressource modifiziert worden ist, seitdem die Datenquelle zuletzt im Cache (112) gespeichert worden ist, an den Server-Prozess;Vergleichen der Antworten von dem Server-Prozess auf die erste bzw. die zweite Anforderung mit den im Cache (112) gespeicherten Daten-Ressourcen, um zu erkennen, ob die Antwort auf die zweite Anforderung inkorrekt ist, wobei der Schritt des Vergleichens aufweist:in Reaktion auf die Antwort auf die zweite Anforderung, die eine Angabe aufweist, dass die Daten-Ressource unverändert ist, Vergleichen der in dem Cache gespeicherten Kopie der Daten-Ressource mit der Kopie der Daten-Ressource, die in Reaktion auf die erste Anforderung zurückgegeben worden ist, um zu ermitteln, ob die Antwort auf die zweite Anforderung inkorrekt ist; undin Reaktion auf die Antwort auf die zweite Anforderung, die eine Kopie der Daten-Ressource aufweist, wird anschließend die im Cache gespeicherte Kopie der Daten-Ressource mit der Kopie der Daten-Ressource verglichen, die in Reaktion auf die zweite Anforderung zurückgegeben worden ist, um zu ermitteln, ob die Antwort auf die zweite Anforderung inkorrekt ist; undDeaktivieren des Speicherns im Cache für die Daten-Ressource, wenn eine vorgegebene Anzahl von inkorrekten zweiten Anforderungen erkannt wird, die der Daten-Ressource zugehörig sind.

Description

  • Gebiet Der Erfindung
  • Die vorliegende Erfindung bezieht sich auf das Verwalten eines Daten-Cache für ein Computersystem.
  • Hintergrund
  • Computersysteme weisen üblicherweise einen oder mehrere Caches auf, die so gestaltet sind, dass sie die Bereitstellung von Daten über das System hinweg beschleunigen. Eine Kopie von Daten von einer ursprünglichen Datenquelle wird in dem Cache gespeichert. In Reaktion auf eine Anforderung der Daten werden die angeforderten Daten aus dem Cache statt der Daten aus der ursprünglichen Datenquelle bereitgestellt. Wenn sich Datenquellen nicht lokal bei einem Datenanforderer befinden, kann ein Cache, der dem Anforderer lokal bereitgestellt wird, so die Bereitstellung der entsprechenden Daten beschleunigen.
  • Manche Daten wie zum Beispiel Web-Seiten können mit einem üblicherweise als Anweisungen bezeichneten Mechanismus ausgestattet sein, der so gestaltet ist, dass ein Speichern von Daten im Cache verhindert wird. Das zum Austauschen von Daten in Form von Web-Seiten über Netzwerke hinweg verwendete Hypertext-Übertragungsprotokoll (hypertext transfer protocol, HTTP) weist Header-Felder auf, die dazu verwendet werden können, solche Anweisungen anzugeben, die erwartete oder erforderliche Verhaltensweisen festlegen. Bei einem solchen Header handelt es sich um einen Cache-Steuer-Header, der durch den Web-Seitenanbieter dazu verwendet werden kann anzugeben, ob die jeweilige Seite im Cache gespeichert werden soll. Solche Cache-Steuerungen unterliegen jedoch üblicherweise insofern zu strengen Vorgaben, als es für manche Daten vorteilhaft sein kann, trotz solcher Cache-Steuerungen im Cache gespeichert zu werden.
  • Daher besteht nach dem Stand der Technik ein Bedarf, das oben genannte Problem zu lösen.
  • Auch die folgenden Dokumente lösen das Problem nicht entsprechend elegant: das Dokument WO 2008 / 101 213 A1 beschreibt einen Server, der ein zwischengespeichertes Dokument und seine zugeordnete Cache-Update-Historie identifiziert. Dies geschieht in Reaktion auf einen Anfrage durch einen Client-Computer. Der Server analysiert die Cache-Update-Historie des Dokumentes und stellt fest, ob das zwischengespeicherte Dokument de facto „frisch“ ist. Falls das der Fall ist, sendet der Server das Dokument an den Client-Computer. Außerdem wird im Dokument US 2012 / 0 209 996 A1 ein Kommunikationssystem beschrieben, das ein erstes und ein zweites Kommunikationsgerät aufweist, die in Übereinstimmung mit IPv6-Anforderungen arbeiten. Dabei bestimmt das erste Kommunikationsgerät, ob eine eigene IP-Adresse für die Kommunikation durch einen Überwachung eines Kommunikationsstatus genutzt wird. Dabei wird einen besondere Antwortmeldung erzeugt, wenn die eigene Adresse nicht mehr genutzt wird.
  • Kurzdarstellung der Erfindung
  • Von einem ersten Aspekt aus betrachtet, stellt die vorliegende Erfindung ein Verfahren zum Verwalten eines Daten-Cache für ein Computersystem bereit, wobei das Verfahren die Schritte aufweist: Verwalten eines Cache für eine oder mehrere Daten-Ressourcen, die durch einen Client-Prozess angefordert werden; in Reaktion auf eine Anforderung einer im Cache gespeicherten Daten-Ressource von dem Client-Prozess: Senden einer ersten Anforderung der Daten-Ressource an einen Server-Prozess; und Senden einer zweiten Anforderung einer Angabe, ob die Daten-Ressource modifiziert worden ist, seitdem die Datenquelle zuletzt im Cache gespeichert worden ist, an den Server-Prozess; Vergleichen der Antworten von dem Server-Prozess auf die erste bzw. die zweite Anforderung mit den im Cache gespeicherten Daten-Ressourcen, um zu erkennen, ob die Antwort auf die zweite Anforderung inkorrekt ist, wobei der Schritt des Vergleichens aufweist: in Reaktion auf die Antwort auf die zweite Anforderung, die eine Angabe aufweist, dass die Daten-Ressource unverändert ist, Vergleichen der in dem Cache gespeicherten Kopie der Daten-Ressource mit der Kopie der Daten-Ressource, die in Reaktion auf die erste Anforderung zurückgegeben worden ist, um zu ermitteln, ob die Antwort auf die zweite Anforderung inkorrekt ist; und in Reaktion auf die Antwort auf die zweite Anforderung, die eine Kopie der Daten-Ressource aufweist, wird anschließend die im Cache gespeicherte Kopie der Daten-Ressource mit der Kopie der Daten-Ressource verglichen, die in Reaktion auf die zweite Anforderung zurückgegeben worden ist, um zu ermitteln, ob die Antwort auf die zweite Anforderung inkorrekt ist; und Deaktivieren des Speicherns im Cache für die Daten-Ressource, wenn eine vorgegebene Anzahl von inkorrekten zweiten Anforderungen erkannt wird, die der Daten-Ressource zugehörig sind.
  • Erste und zweite Anforderungen können in Reaktion auf Anforderungen der im Cache gespeicherten Daten-Ressource während einer vorgegebenen Initialisierungsphase, die der im Cache gespeicherten Daten-Ressource zugehörig ist, an den Server-Prozess gesendet werden; und wenn nach der Initialisierungsphase weniger als die vorgegebene Anzahl von inkorrekten zweiten Anforderungen, die der Daten-Ressource zugehörig sind, erkannt worden ist, kann das Speichern im Cache für die Daten-Ressource aktiviert werden. Wenn das Speichern im Cache für die Daten-Ressource deaktiviert ist, können nach der Initialisierungsphase nur erste Anforderungen in Reaktion auf nachfolgende Anforderungen der im Cache gespeicherten Datenquelle an den Server-Prozess gesendet werden; und wenn das Speichern im Cache für die Daten-Ressource aktiviert ist, können nach der Initialisierungsphase nur zweite Anforderungen in Reaktion auf nachfolgende Anforderungen der im Cache gespeicherten Datenquelle an den Server-Prozess gesendet werden.
  • Die Dauer der Initialisierungsphase kann von einem vorgegebenen Zeitraum abhängen. Die Dauer der Initialisierungsphase kann von einer vorgegebenen Anzahl von Anforderungen der zugehörigen Daten-Ressource abhängen. Die Initialisierungsphase kann in Reaktion auf das Erkennen der vorgegebenen Anzahl von inkorrekten zweiten Anforderungen beendet werden, die der Daten-Ressource zugehörig sind. Die zweiten Anforderungen können HTTP-if-modified-since(falls-modifiziert-seit, IMS)-Anforderungen aufweisen.
  • Von einem weiteren Aspekt aus betrachtet, stellt die vorliegende Erfindung eine Vorrichtung zum Verwalten eines Daten-Cache für ein Computersystem bereit, wobei die Vorrichtung in der Lage ist zum: Verwalten eines Cache für eine oder mehrere Daten-Ressourcen, die durch einen Client-Prozess angefordert werden; in Reaktion auf eine Anforderung einer im Cache gespeicherten Daten-Ressource von dem Client-Prozess: Senden einer ersten Anforderung der Daten-Ressource an einen Server-Prozess; und Senden einer zweiten Anforderung einer Angabe, ob die Daten-Ressource modifiziert worden ist, seitdem die Datenquelle zuletzt im Cache gespeichert worden ist, an den Server-Prozess; Vergleichen der Antworten von dem Server-Prozess auf die erste bzw. die zweite Anforderung mit den im Cache gespeicherten Daten-Ressourcen, um zu erkennen, ob die Antwort auf die zweite Anforderung inkorrekt ist, wobei der Schritt des Vergleichens aufweist: in Reaktion auf die Antwort auf die zweite Anforderung, die eine Angabe aufweist, dass die Daten-Ressource unverändert ist, Vergleichen der in dem Cache gespeicherten Kopie der Daten-Ressource mit der Kopie der Daten-Ressource, die in Reaktion auf die erste Anforderung zurückgegeben worden ist, um zu ermitteln, ob die Antwort auf die zweite Anforderung inkorrekt ist; und in Reaktion auf die Antwort auf die zweite Anforderung, die eine Kopie der Daten-Ressource aufweist, wird anschließend die im Cache gespeicherte Kopie der Daten-Ressource mit der Kopie der Daten-Ressource verglichen, die in Reaktion auf die zweite Anforderung zurückgegeben worden ist, um zu ermitteln, ob die Antwort auf die zweite Anforderung inkorrekt ist; und Deaktivieren des Speicherns im Cache für die Daten-Ressource, wenn eine vorgegebene Anzahl von inkorrekten zweiten Anforderungen erkannt wird, die der Daten-Ressource zugehörig sind.
  • Eine weitere Ausführungsform stellt ein Computerprogrammprodukt zum Verwalten eines Daten-Cache für ein Computersystem bereit, wobei das Computerprogrammprodukt ein computerlesbares Speichermedium aufweist, in dem ein computerlesbarer Programmcode verkörpert ist, wobei der computerlesbare Programmcode so eingerichtet ist, dass er: einen Cache für eine oder mehrere Daten-Ressourcen verwaltet, die durch einen Client-Prozess angefordert werden; in Reaktion auf eine Anforderung einer im Cache gespeicherten Daten-Ressource von dem Client-Prozess: eine erste Anforderung der Daten-Ressource an einen Server-Prozess sendet; und eine zweite Anforderung einer Angabe, ob die Daten-Ressource modifiziert worden ist, nachdem die Datenquelle zuletzt im Cache gespeichert worden ist, an den Server-Prozess sendet; die Antworten von dem Server-Prozess auf die erste bzw. die zweite Anforderung vergleicht, um zu erkennen, ob die Antwort auf die zweite Anforderung inkorrekt ist; und das Speichern im Cache für die Daten-Ressource deaktiviert, wenn eine vorgegebene Anzahl von inkorrekten zweiten Anforderungen erkannt wird, die der Daten-Ressource zugehörig sind.
  • Von einem weiteren Aspekt aus betrachtet, stellt die vorliegende Erfindung ein Computerprogrammprodukt zum Verwalten eines Daten-Cache für ein Computersystem bereit, wobei das Computerprogrammprodukt aufweist: ein computerlesbares Speichermedium, das durch eine Verarbeitungsschaltung lesbar ist und das Anweisungen zum Ausführen durch die Verarbeitungsschaltung zum Durchführen eines Verfahrens zum Durchführen der Schritte der Erfindung speichert.
  • Von einem weiteren Aspekt aus betrachtet, stellt die vorliegende Erfindung ein Computerprogramm bereit, das auf einem computerlesbaren Medium gespeichert ist und in den internen Speicher eines Digitalcomputers ladbar ist, das Abschnitte eines Software-Codes aufweist, um die Schritte der Erfindung durchzuführen, wenn das Programm auf einem Computer ausgeführt wird.
  • Ausführungsformen der Erfindung ermöglichen das automatische Ermitteln, ob ein Speichern einer bestimmten Datenquelle im Cache vorteilhaft wäre. Ausführungsformen der Erfindung können so eingerichtet sein, dass sie gegen eine Anweisung, nicht im Cache zu speichern, verstoßen, um in vorteilhafter Weise ansonsten nicht im Cache gespeicherte Datenquellen im Cache zu speichern. Ausführungsformen der Erfindung können angewendet werden, wenn eine oder mehrere der Datenquellen dynamischen Inhalt aufweisen und wenn Ifmodified-since(IMS)-Antworten möglicherweise inkorrekt sind.
  • Figurenliste
  • Bevorzugte Ausführungsformen der Erfindung werden nun lediglich als Beispiel unter Bezugnahme auf die folgenden Zeichnungen beschrieben, in denen:
    • 1 eine schematische Darstellung eines Computersystems, das einen Proxy-Server aufweist, der einen Daten-Cache bereitstellt, nach dem Stand der Technik ist und in dem eine bevorzugte Ausführungsform der vorliegenden Erfindung implementiert werden kann;
    • 2 eine Tabelle ist, die Daten zum Verwalten des Cache durch den Proxy-Server von 1 gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung aufweist;
    • 3 ein Ablaufplan ist, der eine Verarbeitung, die in dem Proxy-Server von 1 durchgeführt wird, wenn ein Cache für Daten in dem Computersystem von 1 initialisiert wird, gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung veranschaulicht; und
    • 4 ein Ablaufplan ist, der eine Verarbeitung, die in dem Proxy-Server von 1 durchgeführt wird, wenn Anforderungen von Daten in dem Computersystem von 1 verwaltet werden, gemäß einer bevorzugten Ausführungsform der vorliegenden Erfindung veranschaulicht.
  • Ausführliche Beschreibung der Ausführungsformen
  • Unter Bezugnahme auf 1 weist ein Computersystem 100 einen ersten, zweiten und dritten Computer 101, 102, 103 auf, auf denen jeweils ein entsprechendes Betriebssystem 104 geladen ist, das so gestaltet ist, dass es eine Verarbeitungsplattform oder -umgebung zum Ausführen eines oder mehrerer Anwendungsprogramme bereitstellt. Der erste Computer 101 führt ein Client-Anwendungsprogramm in Form eines Webbrowser-Anwendungsprogramms 105 aus, das so gestaltet ist, dass es einem Benutzer ermöglicht, Web-Seiten zu laden und zu betrachten. Der zweite Computer 102 führt ein Server-Anwendungsprogramm in Form eines Proxy-Server-Anwendungsprogramms 106 aus. Der dritte Computer 103 führt ein Server-Anwendungsprogramm in Form eines Web-Server-Anwendungsprogramms 107 aus. Der zweite und der dritte Computer 102, 103 sind über ein Netzwerk 108 verbunden. Der erste Computer 101 ist mit einer Verbindung zu dem Netzwerk 108 über den Proxy-Server 106 ausgestattet, der durch den zweiten Computer 102 bereitgestellt wird. Der dritte Computer 103 ist mit einer Speichereinheit 109 verbunden, die Daten in Form von Web-Seiten 110 oder sonstigen Datendateien oder Kombinationen davon speichert. Bei einer bevorzugten Ausführungsform der vorliegenden Erfindung tauschen die Client-, die Proxy-Server- und die Web-Server-Anwendung 105, 106, 107 Daten mithilfe des Hypertext-Übertragungsprotokolls (HTTP) aus.
  • Bei einer bevorzugten Ausführungsform der vorliegenden Erfindung weist der Proxy-Server 106 ein Cache-Verwaltungsmodul 111 auf, das so gestaltet ist, dass es automatisch einen Cache 112 von angeforderten Daten wie zum Beispiel der Web-Seiten 110 erstellt und verwaltet. Jegliche Anforderung von dem Webbrowser-Anwendungsprogramm 105, eine bestimmte Web-Seite 110 anzuzeigen, wird über den Proxy-Server 106 über das Netzwerk 108 an den Web-Server 107 übergeben. Der Proxy-Server 106 ist so gestaltet, dass er eine Kopie der Web-Seite 110 im Cache speichert, die in Reaktion bereitgestellt wird. Die im Cache gespeicherte Kopie einer bestimmten Web-Seite 110 wird dann unter vorgegebenen Bedingungen dazu verwendet, nachfolgende Anforderungen der jeweiligen Web-Seite 110 von dem Webbrowser 105 zu bedienen.
  • Unter Bezugnahme auf 2 weist das Cache-Verwaltungsmodul 111 einen Cache-Kandidatendatensatz 201, Cache-Initialisierungsdaten 202 und eine Cache-Leistungskennzahl 203 auf. Der Cache-Kandidatendatensatz weist einen Eintrag 204 für jeden Satz von Daten in Form einer Web-Seite 110 auf, die im Cache gespeichert werden kann. Jeder Eintrag 204 weist den einheitlichen Ressourcen-Anzeiger (uniform resource locator, URL) 205 für die entsprechende Web-Seite 110 und einen Zeitstempel 206 auf, der die Zeit angibt, zu der die aktuelle Cache-Kopie der Web-Seite 110 erstellt wurde. Jeder Eintrag 204 weist des Weiteren einen Cache-Speicherungsstatus 207 auf, der so gestaltet ist, dass er angibt, ob für die jeweilige Web-Seite das Speichern im Cache initialisiert (I), aktiviert (J) oder deaktiviert (N) ist.
  • Die Cache-Initialisierungsdaten 202 weisen vorgegebene Daten auf, die eine Initialisierungsphase für jeden Cache-Kandidaten 201 regeln, während der eine oder mehrere Überprüfungen durchgeführt werden, um zu ermitteln, ob das Speichern im Cache für den Cache-Kandidaten 201 aktiviert werden soll. Während der Initialisierungsphase ist der Cache-Speicherungsstatus 207 für den Eintrag dementsprechend auf „I“ festgelegt. Die Cache-Initialisierungsdaten 202 definieren zwei Grenzwerte für die Initialisierungsphase. Der erste Grenzwert weist einen vorgegebenen Zeitraum auf. Der zweite Grenzwert weist eine vorgegebene Anzahl von Anforderungen auf, das heißt, die Anzahl der Anforderungen für die Daten-Ressource, die durch den Eintrag angegeben wird. Die Initialisierungsphase endet, wenn der erste oder der zweite Grenzwert erreicht wird.
  • Während der Initialisierungsphase für einen bestimmten Eintrag 204 ist die Cache-Verwaltungseinheit 111 so gestaltet, dass sie ihre Anforderungen einer jeweiligen Web-Seite 110 an den Web-Server 107 verdoppelt, indem sie die Web-Seite 110 anfordert, als wäre sie nicht im Cache gespeichert (as-if-not-cached), und indem sie außerdem eine Angabe von dem Web-Server 107 anfordert, ob sich die Web-Seite 110 verändert hat, seit sie zuletzt durch die Cache-Verwaltungseinheit 111 empfangen wurde, als wäre die Web-Seite 110 im Cache gespeichert (as-if-cached). Die Ergebnisse der Anforderung, als wäre sie im Cache gespeichert, und der Anforderungen, als wäre sie nicht im Cache gespeichert, werden verglichen, um zu ermitteln, ob ein Speichern der Web-Seite 110 im Cache vorteilhaft wäre. Bei einer bevorzugten Ausführungsform der vorliegenden Erfindung wird der Nutzen des Speicherns im Cache durch die Korrektheit der Antwort des Web-Servers 107 auf die Anforderung einer Angabe von dem Web-Server 107 ermittelt, ob sich die Web-Seite 110 verändert hat. In dem HTTP wird eine solche Anforderung an den Web-Server 107 durch eine If-modified-since(IMS)-Anforderung der Web-Seite 110 bereitgestellt. In Reaktion auf eine solche IMS-Anforderung gibt der Web-Server 107 eine negative Antwort in Form eines Codes „304“, der angibt, dass die Web-Seite 110 unverändert ist, oder eine positive Antwort in Form der aktualisierten Version der Web-Seite 110 zurück.
  • Wie oben angemerkt, ist die Cache-Verwaltungseinheit 111 so gestaltet, dass sie die Antworten der parallelen IMS(as-if-cached)-Anforderung und der Standard(as-if-not-cached)-Anforderung der Web-Seite 110 vergleicht, um zu ermitteln, ob eine bestimmte IMS-Anforderung korrekt ist. Wenn die Cache-Verwaltungseinheit 111 eine Antwort „304“ auf die IMS-Anforderung empfängt, wird die Version der Web-Seite 110, die in Reaktion auf die parallele Standardanforderung empfangen wird, mit der im Cache gespeicherten Kopie der Web-Seite 110 verglichen. Wenn die jeweiligen Kopien identisch sind, wird die IMS-Antwort als korrekt erachtet. Wenn die jeweiligen Kopien nicht identisch sind, wird die IMS-Antwort als inkorrekt erachtet. Wenn die Cache-Verwaltungseinheit 111 in Reaktion auf die IMS-Anforderung eine aktualisierte Version der Web-Seite 110 empfängt, wird diese aktualisierte Version mit der im Cache gespeicherten Kopie der Web-Seite 110 verglichen. Wenn die jeweiligen Kopien identisch sind, wird die IMS-Antwort in diesem Fall als inkorrekt erachtet. Wenn die jeweiligen Kopien nicht identisch sind, wird die IMS-Antwort als korrekt erachtet.
  • Die Cache-Initialisierungsdaten 202 definieren des Weiteren einen Schwellenwert für die Häufigkeit von inkorrekten IMS-Antworten, die für eine bestimmte Web-Seite 110 innerhalb der Initialisierungsphase empfangen werden. Wenn der Schwellenwert erreicht wird, wird der IMS-Antwortmechanismus für die jeweilige Web-Seite 110 als inkorrekt erachtet, und das Speichern im Cache wird daher deaktiviert, wobei der Cache-Speicherungsstatus 207 von „I“ auf „N“ aktualisiert wird. Wenn die Häufigkeit von inkorrekten IMS den Schwellenwert nicht erreicht, wird das Speichern im Cache für die jeweilige Web-Seite aktiviert, und der Cache-Speicherungsstatus 207 wird von „I“ auf „J“ aktualisiert. Bei einer bevorzugten Ausführungsform der vorliegenden Erfindung wird die Initialisierungsphase entweder durch fünfzig Seitenanforderungen oder durch 500 Sekunden seit der ersten Seitenanforderung definiert, je nachdem, was früher eintritt. Für den Fachmann ist ersichtlich, dass sonstige Definitionen für die Initialisierungsphase möglich wären. Bei einer bevorzugten Ausführungsform der vorliegenden Erfindung ist die Schwellenwerthäufigkeit von inkorrekten IMS-Antworten gleich null. Mit anderen Worten, wenn jegliche inkorrekte IMS-Antworten in dem Initialisierungszeitraum protokolliert werden, wird das Speichern im Cache für den entsprechenden Cache-Kandidaten deaktiviert.
  • Nach der Initialisierungsphase für einen bestimmten Cache-Kandidaten wird die Cache-Verwaltungseinheit 111 so gestaltet, dass sie ihre Verarbeitung entsprechend dem in der Initialisierungsphase ermittelten Cache-Speicherungsstatus fortsetzt. Bei einer bevorzugten Ausführungsform der vorliegenden Erfindung ist die Cache-Verwaltungseinheit 111 mit der Leistungskennzahl 203 zur Verwendung mit den Web-Seiten 110 ausgestattet, für die das Speichern im Cache aktiviert worden ist. Die Leistungskennzahl 203 ist so gestaltet, dass sie bestimmt, ob das Speichern eines bestimmten Satzes von Daten wie zum Beispiel einer Web-Seite 110 im Cache deaktiviert werden soll, wenn das Speichern im Cache die Leistungskennzahl 203 nicht erreicht. Mit anderen Worten, die Cache-Verwaltungseinheit 111 ist so gestaltet, dass sie die Bereitstellung der jeweiligen Daten von dem Cache misst und das Speichern im Cache für die jeweiligen Daten deaktiviert, wenn ein solches Speichern im Cache keinen Leistungsvorteil gegenüber dem Abrufen der Daten direkt von ihrer Quelle bietet.
  • Bei einer bevorzugten Ausführungsform der vorliegenden Erfindung weist die Leistungskennzahl 203 eine vorgegebene Schwellenhäufigkeit von Veränderungen für die Quelldaten auf. Mit anderen Worten, wenn die ursprüngliche Web-Seite 110, die durch den Web-Server 107 bereitgestellt wird, sich in einem bestimmten Zeitraum häufiger ändert als der Schwellenwert, wird das Speichern dieser Web-Seite im Cache deaktiviert. Bei einer bevorzugten Ausführungsform der vorliegenden Erfindung beträgt die Änderungshäufigkeit einmal innerhalb eines Zeitraums von einer Minute. Die Leistungskennzahl 203 kann auch als die Häufigkeit der Bereitstellung der Web-Seite 110 von dem Web-Server 107 anstelle der im Cache gespeicherten Kopie innerhalb des vorgegebenen Zeitraums als Folge einer Änderung in der Web-Seite 110, die durch den Web-Server 107 bereitgestellt wird, angegeben werden. Daher wird das Cache-Verwaltungsmodul 111 in Reaktion auf jede Anforderung eines bestimmten initialisierten, im Cache gespeicherten Eintrags 204 so gestaltet, dass es zunächst über eine IMS-Anforderung an den Server 107 ermittelt, ob sich die Quell-Web-Seite 110 geändert hat. Wenn zu einem beliebigen Zeitpunkt die Häufigkeit von Nicht-304-Antworten den Schwellenwert überschreitet, wird das Speichern im Cache für diesen Cache-Eintrag 204 deaktiviert, und sein Cache-Speicherungsstatus wird dementsprechend auf „N“ aktualisiert.
  • Die Verarbeitung, die durch das Cache-Verwaltungsmodul 111 in Reaktion auf eine Anforderung von Daten von dem Web-Browser 105 durchgeführt wird, wird nun unter Bezugnahme auf den Ablaufplan von 3 weiter beschrieben. Die Verarbeitung wird bei Schritt 301 in Reaktion auf eine Seitenanforderung initiiert, die in Form einer URL von einem Anforderer wie zum Beispiel der Client-Anwendung 105 empfangen worden ist, und die Verarbeitung geht zu Schritt 302 über. In Schritt 302 wird die angeforderte URL anhand der aktuellen Cache-Kandidaten 201 überprüft und, wenn sie nicht vorhanden ist, geht die Verarbeitung zu Schritt 303 über. Die neu angeforderte URL wird den Cache-Kandidaten hinzugefügt, und die Verarbeitung geht zu Schritt 304 über. In Schritt 304 wird der Cache-Speicherungsstatus für den neuen Eintrag auf „I“ festgelegt, und die Verarbeitung geht zu Schritt 305 über. In Schritt 305 wird die Seitenanforderung an den Server 107 übergeben, und die zurückgegebene angeforderte Seite wird im Cache gespeichert und an die anfordernde Client-Anwendung 105 übergeben. Dann geht die Verarbeitung zu Schritt 306 über und endet.
  • Wenn es sich in Schritt 302 bei der angeforderten URL um einen aktuellen Cache-Kandidaten 201 handelt, geht die Verarbeitung zu Schritt 307 über. In Schritt 307 wird der Cache-Speicherungsstatus für den entsprechenden Eintrag überprüft, und wenn er auf „I“ festgelegt ist, geht die Verarbeitung zu Schritt 308 über. In Schritt 308 wird eine IMS-Anforderung auf Grundlage des letzten Zugriffszeitpunkts 206 parallel mit einer Standardanforderung der URL an den Server 107 gesendet, und die Verarbeitung geht zu Schritt 309 über. In Schritt 309 wird die Seite, die in Reaktion auf die Standardanforderung empfangen worden ist, an die anfordernde Client-Anwendung 105 weitergeleitet, und die Verarbeitung geht zu Schritt 310 über.
  • Wenn in Schritt 310 eine Antwort „304“, die keine Änderung in der angeforderten Seite seit dem letzten Zugriffszeitpunkt 206 angibt, in Reaktion auf die IMS-Anforderung empfangen wird, geht die Verarbeitung zu Schritt 311 über. In Schritt 311 wird die Seite, die in Reaktion auf die Standardseitenanforderung empfangen worden ist, mit der im Cache gespeicherten Kopie verglichen, und die Verarbeitung geht zu Schritt 312 über. Wenn in Schritt 312 die empfangenen und im Cache gespeicherten Seiten identisch sind, geht die Verarbeitung zu Schritt 313 über. Wenn in Schritt 312 die empfangenen und im Cache gespeicherten Seiten nicht identisch sind, geht die Verarbeitung zu Schritt 314 über. In Schritt 314 wird die inkorrekte IMS-Anforderung protokolliert, und die Verarbeitung geht zu Schritt 313 über.
  • Wenn in Schritt 310 die Antwort auf die IMS-Anforderung eine aktualisierte Seite aufweist, geht die Verarbeitung zu Schritt 315 über. In Schritt 315 wird die Seite, die in Reaktion auf die IMS-Anforderung empfangen worden ist, mit der im Cache gespeicherten Kopie verglichen, und die Verarbeitung geht zu Schritt 316 über. Wenn in Schritt 316 die empfangenen und im Cache gespeicherten Seiten identisch sind, geht die Verarbeitung zu Schritt 314 über und verfährt, wie oben beschrieben. Wenn in Schritt 316 die empfangenen und im Cache gespeicherten Seiten nicht identisch sind, geht die Verarbeitung zu Schritt 317 über. In Schritt 317 wird die aktualisierte Seite im Cache gespeichert und der Cache-Datensatz entsprechend aktualisiert. Dann geht die Verarbeitung zu Schritt 313 über.
  • Wenn in Schritt 313 der Initialisierungszeitraum abgelaufen ist, weil die Frist seit dem ersten Speichern der entsprechenden Seite im Cache verstrichen ist oder weil der Grenzwert für die Seitenanforderungen erreicht worden ist, geht die Verarbeitung zu Schritt 318 über. In Schritt 318 wird die Anzahl der inkorrekten IMS-Anforderungen, die für den Initialisierungszeitraum protokolliert worden ist, mit dem Schwellenwert verglichen, und die Verarbeitung geht zu Schritt 319 über. Wenn in Schritt 319 der Schwellenwert nicht erreicht worden ist, geht die Verarbeitung zu Schritt 320 über. In Schritt 320 wird der Cache-Speicherungsstatus 207 auf „J“ festgelegt, sodass das Speichern im Cache für den entsprechenden Eintrag 204 aktiviert wird, und die Verarbeitung geht zu Schritt 306 über und endet. Wenn in Schritt 319 der Schwellenwert erreicht worden ist, geht die Verarbeitung zu Schritt 321 über. In Schritt 321 wird der Cache-Speicherungsstatus 207 auf „N“ festgelegt, sodass das Speichern im Cache für den entsprechenden Eintrag 204 deaktiviert wird, und die Verarbeitung geht zu Schritt 306 über und endet.
  • Wenn in Schritt 307 der Cache-Speicherungsstatus für den entsprechenden Eintrag nicht auf „I“ festgelegt wird, geht die Verarbeitung zu Schritt 401 von 4 über. Wenn in Schritt 401 der Cache-Speicherungsstatus 207 für den identifizierten Eintrag 204 angibt, dass das Speichern im Cache für den Eintrag 204 aktiviert ist, geht die Verarbeitung zu Schritt 402 über. In Schritt 402 wird eine IMS-Anforderung, die Daten aufweist, die den Zeitstempel 206 darstellen, an den Server 107 gesendet, und die Verarbeitung geht zu Schritt 403 über. In Schritt 403 wird die Antwort von dem Server abgewartet, und wenn eine Antwort „304“ empfangen wird, die angibt, dass die Web-Seite 110 unverändert ist, geht die Verarbeitung zu Schritt 404 über. In Schritt 404 wird die im Cache gespeicherte Kopie der Web-Seite 110 an den anfordernden Web-Browser 105 zurückgegeben, und die Verarbeitung geht zu Schritt 405 über und endet.
  • Wenn in Schritt 403 eine Antwort empfangen wird, die eine aktualisierte Web-Seite aufweist, wodurch angegeben wird, dass die Kopie der Web-Seite in dem Cache 112 veraltet ist, geht die Verarbeitung zu Schritt 406 über. In Schritt 406 wird die Zeit, seit die Kopie der Daten in dem Cache erstellt wurde, anhand des Zeitstempels 206 festgestellt, und wenn sie kürzer ist als der vorgegebene Zeitraum, bei einer bevorzugten Ausführungsform der vorliegenden Erfindung von einer Minute, geht die Verarbeitung zu Schritt 407 über. In Schritt 407 wird das Speichern im Cache für die URL über den Cache-Speicherungsstatus 207 in der Cache-Kandidatentabelle 201 deaktiviert, und die Verarbeitung geht zu Schritt 408 über. In Schritt 408 wird die aktualisierte Kopie der Web-Seite 110 an den anfordernden Web-Browser 105 weitergeleitet. Dann geht die Verarbeitung zu Schritt 405 über und endet. Wenn in Schritt 406 die Zeit, seit die im Cache gespeicherte Kopie der Daten gesichert wurde, länger als der vorgegebene Zeitraum ist, geht die Verarbeitung zu Schritt 409 über. In Schritt 409 wird die aktualisierte Kopie der Web-Seite 110 in dem Cache 112 anstelle der alten Kopie gespeichert, und der Zeitstempel 206 für den entsprechenden Eintrag 204 in dem Cache-Kandidatendatensatz 201 wird entsprechend aktualisiert, und die Verarbeitung geht zu Schritt 408 über und verfährt, wie oben beschrieben.
  • Wenn in Schritt 401 der Cache-Speicherungsstatus 207 des entsprechenden Eintrags 204 für die angeforderte URL angibt, dass das Speichern im Cache deaktiviert ist, geht die Verarbeitung zu Schritt 410 über, in dem die Anforderung als nicht im Cache gespeicherte Anforderung an den Server 107 verarbeitet wird und die Server-Antwort direkt an den anfordernden Web-Browser 105 zurückgegeben wird. Dann geht die Verarbeitung zu Schritt 405 über und endet.
  • Bei einer weiteren Ausführungsform wird die Häufigkeit von inkorrekten IMS-Antworten vor dem Ablaufen des Initialisierungszeitraums überprüft, und wenn der Schwellenwert überschritten ist, wird für die entsprechende Daten-Ressource das Speichern im Cache deaktiviert und der Initialisierungsprozess eingestellt. Die Häufigkeit von inkorrekten IMS-Antworten kann jedes Mal, wenn die entsprechenden Daten angefordert werden, anhand des Schwellenwerts überprüft werden.
  • Bei einer weiteren Ausführungsform kann der Satz von Cache-Kandidaten manuell modifiziert werden. Bei einer weiteren Ausführungsform werden nur Datenquellen mit einem oder mehreren vorgegebenen Kriterien als Cache-Kandidaten ausgewählt. Bei einer weiteren Ausführungsform wird die Initialisierungsphase auf Datenquellen angewendet, die als nicht im Cache zu speichern angegeben sind, das heißt, die einer Anweisung oder Richtlinie, nicht im Cache zu speichern, zugehörig sind.
  • Bei einer weiteren Ausführungsform wird die Initialisierungsphase nur durch einen Zeitraum geregelt. Bei einer weiteren Ausführungsform wird die Initialisierungsphase nur durch eine Schwellenanzahl von Anforderungen der Daten-Ressourcen geregelt. Bei einer weiteren Ausführungsform ist die Schwellenhäufigkeit von inkorrekten IMS-Antworten proportional zu der Gesamtzahl von Anforderungen der entsprechenden Datenquelle. Bei einer weiteren Ausführungsform weist die Schwellenhäufigkeit von inkorrekten IMS-Antworten eine Quote von inkorrekten IMS-Antworten für die entsprechende Datenquelle auf.
  • Bei einer weiteren Ausführungsform ist die Cache-Verwaltungseinheit so gestaltet, dass sie das Speichern einer zuvor deaktivierten Datenquelle im Cache in Reaktion darauf wieder aktiviert, dass eine vorgegebene Leistungskennzahl erreicht wird. Die Leistungskennzahl für das Wiederaktivieren des Speicherns im Cache kann dieselbe wie für das Deaktivieren des Speicherns im Cache sein. Beispielsweise kann das Speichern im Cache für eine bestimmte Datenquelle wieder aktiviert werden, wenn die Daten länger als eine Minute lang unverändert bleiben. Der wieder aktivierte Cache-Kandidat kann einer weiteren Initialisierungsphase unterliegen.
  • Bei einer weiteren Ausführungsform weist die vorgegebene Leistungskennzahl das Verhältnis einer Änderung an einer bestimmten Datenquelle zu der Gesamtzahl von Anforderungen der Ressource in einem bestimmten Zeitraum auf.
  • Wie für Fachleute ersichtlich ist, kann eine beliebige Leistungskennzahl angegeben werden, die für eine bestimmte Anwendung der Erfindung geeignet ist. Beispielsweise kann ein beliebiger Zeitraum in einer Leistungskennzahl angegeben werden, auch ein tatsächlich unendlicher Zeitraum. Mit anderen Worten, die Leistungskennzahl kann die Gesamtzahl der Änderungen in einer Ressource oder das Verhältnis von Änderungen zu der Anzahl von Anforderungen einer Ressource aufweisen, seit der Cache eingerichtet wurde.
  • Bei einer weiteren Ausführungsform ist die Cache-Verwaltungseinheit so gestaltet, dass sie die Größe und die Geschwindigkeit einer Anforderung von Daten von der Datenquelle im Vergleich zu derjenigen des Überprüfens anhand der Datenquelle, ob die Daten unverändert sind, und des nachfolgenden Abrufens der Daten aus dem Cache misst. Wenn der angeforderte Satz von Daten relativ klein ist und/oder die Antwort von der Datenquelle relativ schnell eintrifft im Vergleich mit dem Abrufen der im Cache gespeicherten Daten, kann das Speichern im Cache für die entsprechende Datenquelle deaktiviert werden. Solche Überprüfungen können beim Einrichten des Cache oder regelmäßig während des Betriebs des Cache durchgeführt werden.
  • Wie für Fachleute ersichtlich ist, können jegliche sonstige Mechanismen zum Ermitteln, ob eine Datenquelle modifiziert ist, genutzt werden. Solche sonstigen Mechanismen können innerhalb eines bestimmten Datenübertragungsprotokolls oder unabhängig von einem solchen Protokoll bereitgestellt werden.
  • Wie für Fachleute ersichtlich ist, kann eine Datenquelle durch ein beliebiges geeignetes Mittel wie zum Beispiel eine URL oder einen universellen Bezeichner für Ressourcen (universal resource identifier, URI) oder eine(n) beliebige(n) sonstige(n) Kennung, Anzeiger, Dateinamen oder Dateipfad referenziert oder gekennzeichnet werden.
  • Wie für Fachleute ersichtlich ist, kann ein Cache zum Speichern eines beliebigen Typs von Daten verwendet werden, wenn das Speichern einer lokalen Kopie der Daten im Vergleich zu einem Zugreifen auf solche Daten an ihrer ursprünglichen Quelle vorteilhaft ist. Die Verwendung von Caches ist nicht auf Web-Seitendaten beschränkt.
  • Wie für Fachleute ersichtlich ist, können Ausführungsformen der Erfindung mithilfe eines beliebigen sonstigen Datenübertragungsprotokolls auf den Anwendungs-, Transport-, Vermittlungs- oder sonstigen Schichten wie zum Beispiel des File Transfer Protocol (FTP), des Instant Message Access Protocol (IMAP) oder des Transmission Control Protocol (TCP) implementiert werden.
  • Wie für Fachleute ersichtlich ist, können sich das Proxy-Server-Anwendungsprogramm und sein zugehöriger Cache an einer beliebigen Stelle in dem Netzwerk zwischen den Client- und Server-Computern oder auf den Client- und Server-Computern befinden.
  • Ausführungsformen der Erfindung ermöglichen das automatische Ermitteln, ob ein Speichern einer bestimmten Datenquelle im Cache vorteilhaft wäre. Ausführungsformen können so gestaltet sein, dass sie gegen eine Anweisung, nicht im Cache zu speichern, verstoßen, um in vorteilhafter Weise ansonsten nicht im Cache gespeicherte Datenquellen im Cache zu speichern. Ausführungsformen der Erfindung können angewendet werden, wenn eine oder mehrere der Datenquellen dynamischen Inhalt aufweisen und wenn IMS-Antworten möglicherweise inkorrekt sind.
  • Für Fachleute ist ersichtlich, dass es sich bei der Vorrichtung, die einen Teil oder die gesamte vorliegende Erfindung verkörpert, um eine Universaleinheit handelt kann, auf der Software so eingerichtet ist, dass sie einen Teil oder eine gesamte Ausführungsform der Erfindung bereitstellt. Bei der Einheit könnte es sich um eine einzelne Einheit oder um eine Gruppe von Einheiten handeln, und die Software könnte ein einzelnes Programm oder ein Satz von Programmen sein. Des Weiteren kann eine beliebige oder sämtliche Software, die zum Implementieren der Erfindung verwendet wird, über ein beliebiges geeignetes Übertragungs- oder Speichermittel so ausgetauscht werden, dass die Software auf eine oder mehrere Einheiten geladen werden kann.
  • Wenngleich die vorliegende Erfindung durch die Beschreibung ihrer Ausführungsformen veranschaulicht worden ist und wenngleich die Ausführungsformen recht detailliert beschrieben worden sind, beabsichtigt der Antragsteller nicht, den Umfang der beigefügten Ansprüche auf solche Details zu begrenzen oder in irgendeiner Weise einzuschränken. Zusätzliche Vorteile und Modifizierungen werden Fachleuten leicht ersichtlich. Daher ist die Erfindung in ihren umfassenderen Aspekten nicht auf die genauen Details der/des charakteristischen Vorrichtung und Verfahrens und die veranschaulichenden Beispiele, die dargestellt und beschrieben worden sind, beschränkt. Dementsprechend kann von solchen Details abgewichen werden, ohne vom Umfang des allgemeinen Erfindungsgedankens des Antragstellers abzuweichen.
  • Wie für einen Fachmann ersichtlich ist, können Aspekte der vorliegenden Erfindung als System, Verfahren, Computerprogrammprodukt oder Computerprogramm verkörpert werden. Dementsprechend können Aspekte der vorliegenden Erfindung eine reine Hardware-Ausführungsform, eine reine Software-Ausführungsform (darunter Firmware, residente Software, Mikrocode usw.) oder eine Ausführungsform annehmen, in der Software- und Hardware-Aspekte kombiniert werden, die sämtlich hierin verallgemeinernd als „Schaltung“, „Modul“ oder „System“ bezeichnet werden können. Des Weiteren können Aspekte der vorliegenden Erfindung die Form eines Computerprogrammprodukts annehmen, das in einem oder mehreren computerlesbaren Medien verkörpert ist, auf denen computerlesbarer Programmcode verkörpert ist.
  • Es kann eine beliebige Kombination eines oder mehrerer computerlesbarer Medien verwendet werden. Bei dem computerlesbaren Medium kann es sich um ein computerlesbares Signalmedium oder ein computerlesbares Speichermedium handeln. Bei einem computerlesbaren Speichermedium kann es sich zum Beispiel um ein elektronisches, magnetisches, optisches, elektromagnetisches, Infrarot- oder Halbleitersystem, eine solche Vorrichtung oder Einheit oder um eine beliebige geeignete Kombination aus Obigen handeln, ohne auf diese beschränkt zu sein. Zu konkreteren Beispielen (einer nicht erschöpfenden Liste) des computerlesbaren Speichermediums würden folgende gehören: eine elektrische Verbindung mit einer oder mehreren Leitungen, eine tragbare Computerdiskette, eine Festplatte, ein Direktzugriffsspeicher (random access memory, RAM), ein Festwertspeicher (read-only memory, ROM), ein löschbarer, programmierbarer Festwertspeicher (erasable programmable read-only memory, EPROM oder Flash-Speicher), ein Lichtwellenleiter, ein tragbarer Compact-Disk-Festwertspeicher (CD-ROM), eine optische Speichereinheit, eine Magnetspeichereinheit oder eine beliebige geeignete Kombination der Obigen. Im Rahmen dieses Dokuments kann ein computerlesbares Speichermedium jedes physische Medium sein, das ein Programm zur Verwendung durch ein System, eine Vorrichtung oder Einheit zur Befehlsausführung bzw. in Verbindung mit diesen enthalten oder speichern kann.
  • Ein computerlesbares Signalmedium kann ein sich ausbreitendes Datensignal, in dem computerlesbarer Programmcode verkörpert wird, zum Beispiel im Basisband oder als Teil einer Trägerwelle beinhalten. Ein solches sich ausbreitendes Signal kann eine Vielfalt von Formen annehmen, darunter eine elektromagnetische, eine optische oder eine beliebige geeignete Kombination davon, ohne auf diese beschränkt zu sein. Bei einem computerlesbaren Signalmedium kann es sich um ein beliebiges computerlesbares Medium handeln, das kein computerlesbares Speichermedium ist und das ein Programm zur Verwendung durch ein System, eine Vorrichtung oder Einheit zur Befehlsausführung bzw. in Verbindung mit diesen austauschen, verbreiten oder transportieren kann.
  • Auf einem computerlesbaren Medium verkörperter Programmcode kann mithilfe eines beliebigen geeigneten Mediums übertragen werden, zum Beispiel über Funk, Kabel, Lichtwellenleiterkabel, Hochfrequenz (HF) usw. oder über eine beliebige geeignete Kombination der Obigen, ohne auf diese beschränkt zu sein.
  • Computerprogrammcode zum Ausführen von Vorgängen für Aspekte der vorliegenden Erfindung kann in einer beliebigen Kombination einer oder mehrerer Programmiersprachen geschrieben sein, zum Beispiel in einer objektorientierten Programmiersprache wie etwa Java®, Smalltalk, C++ oder dergleichen und in herkömmlichen verfahrensorientierten Programmiersprachen wie zum Beispiel der Programmiersprache „C“ oder ähnlichen Programmiersprachen. Der Programmcode kann vollständig auf dem Computer des Benutzers, zum Teil auf dem Computer des Benutzers, als eigenständiges Software-Paket, zum Teil auf dem Computer des Benutzers und zum Teil auf einem entfernt angeordneten Computer oder vollständig auf dem entfernt angeordneten Computer oder Server ausgeführt werden. In letzterem Szenario kann der entfernt angeordnete Computer mit dem Computer des Benutzers durch jede Art von Netzwerk verbunden sein, zum Beispiel durch ein lokales Netzwerk (LAN) oder ein Weitverkehrs-Netzwerk (WAN), oder die Verbindung kann mit einem externen Computer (zum Beispiel über das Internet mithilfe eines Internet-Diensteanbieters) hergestellt werden. Java und alle Marken und Logos auf der Grundlage von Java sind Marken oder eingetragene Marken von Oracle und/oder seinen verbundenen Unternehmen.
  • Aspekte der vorliegenden Erfindung werden nachfolgend unter Bezugnahme auf Ablaufpläne und/oder Blockschaubilder von Verfahren, Vorrichtungen (Systemen) und Computerprogrammprodukten gemäß Ausführungsformen der Erfindung beschrieben. Es versteht sich, dass jeder Block der Ablaufpläne und/oder Blockschaubilder und Kombinationen von Blöcken in den Ablaufplänen und/oder Blockschaubildern durch Computerprogrammbefehle implementiert werden kann/können. Diese Computerprogrammbefehle können für einen Prozessor eines Universalcomputers, eines Spezialcomputers oder einer sonstigen programmierbaren Datenverarbeitungsvorrichtung bereitgestellt werden, um eine Maschine zu erzeugen, sodass die Befehle, die über den Prozessor des Computers oder einer sonstigen programmierbaren Datenverarbeitungsvorrichtung ausgeführt werden, ein Mittel zum Implementieren der Funktionen/Vorgänge erzeugen, die in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegeben sind.
  • Diese Computerprogrammbefehle können auch in einem computerlesbaren Medium gespeichert werden, das einen Computer, eine sonstige programmierbare Datenverarbeitungsvorrichtung oder sonstige Einheiten so steuern kann, dass sie in einer bestimmten Weise funktionieren, sodass die in dem computerlesbaren Medium gespeicherten Befehle einen Herstellungsgegenstand (article of manufacture) erzeugen, der Befehle beinhaltet, die die/den Funktion/Vorgang implementieren, die/der in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegeben ist.
  • Die Computerprogrammbefehle können außerdem auf einen Computer, eine sonstige programmierbare Datenverarbeitungsvorrichtung oder sonstige Einheiten geladen werden, um zu bewirken, dass eine Reihe von Schritten eines Vorgangs auf dem Computer, einer sonstigen programmierbaren Vorrichtung oder sonstigen Einheiten ausgeführt wird, um einen computerimplementierten Prozess zu erzeugen, sodass die auf dem Computer oder einer sonstigen programmierbaren Vorrichtung ausgeführten Befehle Prozesse bereitstellen, um die in dem Block oder den Blöcken der Ablaufpläne und/oder der Blockschaubilder angegebenen Funktionen/Vorgänge zu implementieren.
  • Die Ablaufpläne und Blockschaubilder in den Figuren veranschaulichen die Architektur, Funktionalität und Arbeitsweise möglicher Implementierungen von Systemen, Verfahren und Computerprogrammprodukten gemäß verschiedenen Ausführungsformen der vorliegenden Erfindung. In diesem Zusammenhang kann jeder Block in den Ablaufplänen oder Blockschaubildern ein Modul, ein Segment oder einen Abschnitt eines Codes darstellen, der einen oder mehrere ausführbare Befehle zum Implementieren der angegebenen logischen Funktionen) aufweist. Es ist außerdem zu beachten, dass bei einigen alternativen Implementierungen die in dem Block vermerkten Funktionen in einer anderen Reihenfolge als in den Figuren vermerkt auftreten können. Beispielsweise können je nach einbezogener Funktionalität zwei nacheinander dargestellte Blöcke sogar im Wesentlichen gleichzeitig ausgeführt werden, oder die Blöcke können bisweilen in der umgekehrten Reihenfolge ausgeführt werden. Es ist ferner zu beachten, dass jeder Block der Blockschaubilder und/oder der Ablaufpläne und Kombinationen von Blöcken in den Blockschaubildern und/oder in den Ablaufplänen durch Spezialsysteme auf Grundlage von Hardware, die die angegebenen Funktionen oder Vorgänge ausführen, oder durch Kombinationen von Spezial-Hardware und Computerbefehlen implementiert werden können. Um Missverständnisse auszuschließen, soll der Begriff „weist auf“ so, wie er hier in der gesamten Beschreibung und den gesamten Ansprüchen verwendet wird, nicht so ausgelegt werden, dass er „besteht nur aus“ bedeutet.

Claims (16)

  1. Verfahren zum Verwalten eines Daten-Cache für ein Computersystem (100), wobei das Verfahren die Schritte aufweist: Verwalten eines Cache (112) für eine oder mehrere Daten-Ressourcen, die durch einen Client-Prozess angefordert werden; in Reaktion auf eine Anforderung einer im Cache gespeicherten Daten-Ressource von dem Client-Prozess: Senden einer ersten Anforderung der Daten-Ressource an einen Server-Prozess; und Senden einer zweiten Anforderung einer Angabe, ob die Daten-Ressource modifiziert worden ist, seitdem die Datenquelle zuletzt im Cache (112) gespeichert worden ist, an den Server-Prozess; Vergleichen der Antworten von dem Server-Prozess auf die erste bzw. die zweite Anforderung mit den im Cache (112) gespeicherten Daten-Ressourcen, um zu erkennen, ob die Antwort auf die zweite Anforderung inkorrekt ist, wobei der Schritt des Vergleichens aufweist: in Reaktion auf die Antwort auf die zweite Anforderung, die eine Angabe aufweist, dass die Daten-Ressource unverändert ist, Vergleichen der in dem Cache gespeicherten Kopie der Daten-Ressource mit der Kopie der Daten-Ressource, die in Reaktion auf die erste Anforderung zurückgegeben worden ist, um zu ermitteln, ob die Antwort auf die zweite Anforderung inkorrekt ist; und in Reaktion auf die Antwort auf die zweite Anforderung, die eine Kopie der Daten-Ressource aufweist, wird anschließend die im Cache gespeicherte Kopie der Daten-Ressource mit der Kopie der Daten-Ressource verglichen, die in Reaktion auf die zweite Anforderung zurückgegeben worden ist, um zu ermitteln, ob die Antwort auf die zweite Anforderung inkorrekt ist; und Deaktivieren des Speicherns im Cache für die Daten-Ressource, wenn eine vorgegebene Anzahl von inkorrekten zweiten Anforderungen erkannt wird, die der Daten-Ressource zugehörig sind.
  2. Verfahren gemäß Anspruch 1, in dem: erste und zweite Anforderungen in Reaktion auf Anforderungen der im Cache (112) gespeicherten Daten-Ressource während einer vorgegebenen Initialisierungsphase, die der im Cache gespeicherten Daten-Ressource zugehörig ist, an den Server-Prozess gesendet werden; und wenn nach der Initialisierungsphase weniger als die vorgegebene Anzahl von inkorrekten zweiten Anforderungen, die der Daten-Ressource zugehörig sind, erkannt worden ist, das Speichern im Cache für die Daten-Ressource aktiviert wird.
  3. Verfahren nach Anspruch 2, in dem: wenn das Speichern im Cache (112) für die Daten-Ressource deaktiviert ist, nach der Initialisierungsphase nur erste Anforderungen in Reaktion auf nachfolgende Anforderungen der im Cache (112) gespeicherten Datenquelle an den Server-Prozess gesendet werden; und wenn das Speichern im Cache für die Daten-Ressource aktiviert ist, nach der Initialisierungsphase nur zweite Anforderungen in Reaktion auf nachfolgende Anforderungen der im Cache (112) gespeicherten Datenquelle an den Server-Prozess gesendet werden.
  4. Verfahren nach Anspruch 2 oder 3, in dem die Dauer der Initialisierungsphase von einem vorgegebenen Zeitraum abhängt.
  5. Verfahren nach einem der Ansprüche 2 bis 4, in dem die Dauer der Initialisierungsphase von einer vorgegebenen Anzahl von Anforderungen der zugehörigen Daten-Ressource abhängt.
  6. Verfahren nach einem der Ansprüche 2 bis 5, in dem die Initialisierungsphase in Reaktion auf das Erkennen der vorgegebenen Anzahl von inkorrekten zweiten Anforderungen beendet wird, die der Daten-Ressource zugehörig sind.
  7. Verfahren nach einem der vorangehenden Ansprüche, in dem die zweiten Anforderungen HTTP-if-modified-since(IMS)-Anforderungen aufweisen.
  8. Vorrichtung zum Verwalten eines Daten-Cache für ein Computersystem (100), wobei die Vorrichtung angepasst ist zum: Verwalten eines Cache (112) für eine oder mehrere Daten-Ressourcen, die durch einen Client-Prozess angefordert werden; in Reaktion auf eine Anforderung einer im Cache gespeicherten Daten-Ressource von dem Client-Prozess: Senden einer ersten Anforderung der Daten-Ressource an einen Server-Prozess; und Senden einer zweiten Anforderung einer Angabe, ob die Daten-Ressource modifiziert worden ist, seitdem die Datenquelle zuletzt im Cache (112) gespeichert worden ist, an den Server-Prozess; Vergleichen der Antworten von dem Server-Prozess auf die erste bzw. die zweite Anforderung mit den im Cache (112) gespeicherten Daten-Ressourcen, um zu erkennen, ob die Antwort auf die zweite Anforderung inkorrekt ist, wobei der Schritt des Vergleichens aufweist: in Reaktion auf die Antwort auf die zweite Anforderung, die eine Angabe aufweist, dass die Daten-Ressource unverändert ist, Vergleichen der in dem Cache (112) gespeicherten Kopie der Daten-Ressource mit der Kopie der Daten-Ressource, die in Reaktion auf die erste Anforderung zurückgegeben worden ist, um zu ermitteln, ob die Antwort auf die zweite Anforderung inkorrekt ist; und in Reaktion auf die Antwort auf die zweite Anforderung, die eine Kopie der Daten-Ressource aufweist, wird anschließend die im Cache (112) gespeicherte Kopie der Daten-Ressource mit der Kopie der Daten-Ressource verglichen, die in Reaktion auf die zweite Anforderung zurückgegeben worden ist, um zu ermitteln, ob die Antwort auf die zweite Anforderung inkorrekt ist; und Deaktivieren des Speicherns im Cache (112) für die Daten-Ressource, wenn eine vorgegebene Anzahl von inkorrekten zweiten Anforderungen erkannt wird, die der Daten-Ressource zugehörig sind.
  9. Vorrichtung nach Anspruch 8, die des Weiteren angepasst ist zum: Senden, wobei in Reaktion auf Anforderungen der im Cache (112) gespeicherten Daten-Ressource während einer vorgegebenen Initialisierungsphase, die der im Cache gespeicherten Daten-Ressource zugehörig ist, erste und zweite Anforderungen an den Server-Prozess gesendet werden, und Aktivieren, wobei in Reaktion darauf, dass nach der Initialisierungsphase weniger als die vorgegebene Anzahl von inkorrekten zweiten Anforderungen, die der Daten-Ressource zugehörig sind, erkannt worden ist, das Speichern im Cache (112) für die Daten-Ressource aktiviert wird.
  10. Vorrichtung nach Anspruch 9, die des Weiteren in der Lage ist zum: Senden, wobei in Reaktion darauf, dass das Speichern im Cache (112) für die Daten-Ressource deaktiviert ist, nach der Initialisierungsphase nur erste Anforderungen in Reaktion auf nachfolgende Anforderungen der im Cache (112) gespeicherten Datenquelle an den Server-Prozess gesendet werden; und Senden in Reaktion darauf, dass das Speichern im Cache (112) für die Daten-Ressource aktiviert ist, nach der Initialisierungsphase nur zweiter Anforderungen in Reaktion auf nachfolgende Anforderungen der im Cache (112) gespeicherten Datenquelle an den Server-Prozess.
  11. Vorrichtung nach Anspruch 9 oder 10, in der die Dauer der Initialisierungsphase von einem vorgegebenen Zeitraum abhängt.
  12. Vorrichtung nach einem der Ansprüche 9 bis 11, in der die Dauer der Initialisierungsphase von einer vorgegebenen Anzahl von Anforderungen der zugehörigen Daten-Ressource abhängt.
  13. Vorrichtung nach einem der Ansprüche 10 bis 12, die des Weiteren angepasst ist, in Reaktion auf das Erkennen der vorgegebenen Anzahl von inkorrekten zweiten Anforderungen, die der Daten-Ressource zugehörig sind, die Initialisierungsphase in Reaktion auf das Erkennen zu beenden.
  14. Vorrichtung nach einem der Ansprüche 8 bis 13, in dem die zweiten Anforderungen HTTP-if-modified-since(IMS)-Anforderungen aufweisen.
  15. Computerprogrammprodukt zum Verwalten eines Daten-Cache für ein Computersystem (100), wobei das Computerprogrammprodukt aufweist: ein computerlesbares Speichermedium, das durch eine Verarbeitungsschaltung lesbar ist und das Befehle zur Ausführung durch die Verarbeitungsschaltung zum Durchführen eines Verfahrens nach einem der Ansprüche 1 bis 7 speichert.
  16. In einem computerlesbaren Medium gespeichertes und in den internen Speicher eines Digitalcomputers ladbares Computerprogramm, das Abschnitte eines Software-Codes aufweist, um das Verfahren eines der Ansprüche 1 bis 7 durchzuführen, wenn das Programm auf einem Computer (100) ausgeführt wird.
DE112013004098.0T 2012-08-20 2013-08-06 Verwalten eines Daten-Cache für ein Computersystem Active DE112013004098B4 (de)

Applications Claiming Priority (3)

Application Number Priority Date Filing Date Title
GB1214824.3A GB2505179A (en) 2012-08-20 2012-08-20 Managing a data cache for a computer system
GB1214824.3 2012-08-20
PCT/IB2013/056442 WO2014030088A1 (en) 2012-08-20 2013-08-06 Managing a data cache for a computer system

Publications (2)

Publication Number Publication Date
DE112013004098T5 DE112013004098T5 (de) 2015-05-07
DE112013004098B4 true DE112013004098B4 (de) 2022-08-11

Family

ID=47017039

Family Applications (1)

Application Number Title Priority Date Filing Date
DE112013004098.0T Active DE112013004098B4 (de) 2012-08-20 2013-08-06 Verwalten eines Daten-Cache für ein Computersystem

Country Status (6)

Country Link
US (1) US9787791B2 (de)
JP (1) JP5980430B2 (de)
CN (1) CN104885064B (de)
DE (1) DE112013004098B4 (de)
GB (2) GB2505179A (de)
WO (1) WO2014030088A1 (de)

Families Citing this family (9)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
EP2953313A1 (de) * 2014-06-05 2015-12-09 Thomson Licensing Verfahren zum Betreiben eines Zwischenspeichers entlang eines Übertragungsweges zwischen Client-Endgeräten und mindestens einem Server und entsprechender Zwischenspeicher
US10142385B2 (en) * 2015-03-10 2018-11-27 Qualcomm Incorporated Multi-service initialization for adaptive media streaming
US10642657B2 (en) * 2018-06-27 2020-05-05 The Hong Kong Polytechnic University Client-server architecture for multicore computer system to realize single-core-equivalent view
CN110928944B (zh) * 2018-08-30 2024-04-02 阿里巴巴集团控股有限公司 一种数据处理方法及其装置
CN111666516A (zh) * 2020-04-24 2020-09-15 北京奇艺世纪科技有限公司 页面加载方法、装置、电子设备及存储介质
US11960773B2 (en) * 2020-07-31 2024-04-16 Hewlett Packard Enterprise Development Lp Modifying virtual persistent volumes based on analysis of performance metrics
CN112765507B (zh) * 2021-01-27 2023-12-26 上海淇玥信息技术有限公司 一种页面首屏渲染与资源加载方法、装置和电子设备
US11941151B2 (en) * 2021-07-16 2024-03-26 International Business Machines Corporation Dynamic data masking for immutable datastores
CN114064724A (zh) * 2021-11-16 2022-02-18 瀚云科技有限公司 报表数据处理系统、方法、服务器、电子设备及存储介质

Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008101213A1 (en) 2007-02-15 2008-08-21 Google Inc. Systems and methods for cache optimization
US20120209996A1 (en) 2009-10-16 2012-08-16 Nec Corporation Communication system, communication device, communication control method and non-transitory computer readable medium

Family Cites Families (17)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4464717A (en) * 1982-03-31 1984-08-07 Honeywell Information Systems Inc. Multilevel cache system with graceful degradation capability
US6253234B1 (en) 1997-10-17 2001-06-26 International Business Machines Corporation Shared web page caching at browsers for an intranet
US6185608B1 (en) 1998-06-12 2001-02-06 International Business Machines Corporation Caching dynamic web pages
AU8244398A (en) * 1998-07-21 2000-02-14 Athena Telecom Lab, Inc. Method of managing change history of web information, management device, and recording medium
CA2369108C (en) * 1999-03-31 2007-06-05 America Online Incorporated Handling a request for information provided by a network site
US6557076B1 (en) 1999-07-22 2003-04-29 International Business Machines Corporation Method and apparatus for aggressively rendering data in a data processing system
US7240100B1 (en) 2000-04-14 2007-07-03 Akamai Technologies, Inc. Content delivery network (CDN) content server request handling mechanism with metadata framework support
US6990526B1 (en) 2000-05-22 2006-01-24 Pointred Technologies, Inc. Method and apparatus for web caching
US7035911B2 (en) 2001-01-12 2006-04-25 Epicrealm, Licensing Llc Method and system for community data caching
US20040236824A1 (en) 2003-05-23 2004-11-25 Millington Bradley D. Post-cache substitution
US7076500B2 (en) 2003-06-30 2006-07-11 David Gallant Selective file caching method
JP4392049B2 (ja) * 2006-02-27 2009-12-24 富士通株式会社 キャッシュ制御装置およびキャッシュ制御プログラム
US7774356B2 (en) * 2006-12-04 2010-08-10 Sap Ag Method and apparatus for application state synchronization
JP5068071B2 (ja) * 2006-12-27 2012-11-07 インターナショナル・ビジネス・マシーンズ・コーポレーション サーバ上のデータを、クライアントのキャッシュを利用してバックアップする装置および方法。
US9460229B2 (en) * 2007-10-15 2016-10-04 Viasat, Inc. Methods and systems for implementing a cache model in a prefetching system
US10257016B2 (en) * 2009-06-08 2019-04-09 Wsou Investments, Llc Virtual leased line address resolution protocol cache for customer edge internet protocol addresses
US20120089700A1 (en) 2010-10-10 2012-04-12 Contendo, Inc. Proxy server configured for hierarchical caching and dynamic site acceleration and custom object and associated method

Patent Citations (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
WO2008101213A1 (en) 2007-02-15 2008-08-21 Google Inc. Systems and methods for cache optimization
US20120209996A1 (en) 2009-10-16 2012-08-16 Nec Corporation Communication system, communication device, communication control method and non-transitory computer readable medium

Also Published As

Publication number Publication date
CN104885064B (zh) 2017-11-24
GB2505179A (en) 2014-02-26
JP5980430B2 (ja) 2016-08-31
WO2014030088A1 (en) 2014-02-27
GB2519688A (en) 2015-04-29
JP2015527674A (ja) 2015-09-17
GB201500722D0 (en) 2015-03-04
GB201214824D0 (en) 2012-10-03
DE112013004098T5 (de) 2015-05-07
US9787791B2 (en) 2017-10-10
CN104885064A (zh) 2015-09-02
US20150215417A1 (en) 2015-07-30

Similar Documents

Publication Publication Date Title
DE112013004098B4 (de) Verwalten eines Daten-Cache für ein Computersystem
DE60011069T2 (de) Behandlung einer anfrage nach informationen, die von einem dienstleisters angeboten werden
DE102012215665B4 (de) Dynamische Änderung der TTL-Werte in einem Datencache
DE102016103733B4 (de) Kanaleigentum in einem Veröffentlichungs-/Abonnier-System
DE60015423T2 (de) Verfahren und Vorrichtung zur Objektwiedergabe in einem Netzwerk
DE69838262T2 (de) Allgemeine benutzer-authentifizierung für netz-rechner
DE102012216028A1 (de) Webseiten-skriptverwaltung
EP1930818B1 (de) Verfahren zum Vorabübertragen strukturierter Datenmengen zwischen einer Clienteinrichtung und einer Servereinrichtung
DE102012220857B4 (de) System und Steuerverfahren
DE112018000193T5 (de) Daten sequenziell in Zonen in einem verstreuten Speichernetzwerk speichern
DE202017105834U1 (de) Verwaltung von Anwendungsaktualisierungen
DE112011105481T5 (de) Ermöglichen des Einsatzes einer anderen Rechenvorrichtung durch eine Rechenvorrichtung
DE102016104478A1 (de) Kryptographische Verfahren, die Arbeitsnachweise in Systemen untereinander verbundener Knoten realisieren
DE112013003300B4 (de) Schrittweise Vorbereitung von Videos auf die Lieferung
DE202008013034U1 (de) System zum Beschleunigen von Browsing-Sitzungen
DE102013204186A1 (de) Ermitteln von Prioritäten für zwischengespeicherte Objekte zum Ordnen des Übertragens von Änderungen an zwischengespeicherten Objekten beruhend auf gemessener Netzwerkbandbreite
DE202014011541U1 (de) System zum Herstellen einer Vertrauensverknüpfung
DE202015009292U1 (de) Erzeugung eines Aktivitätsflusses
DE112015003926T5 (de) Publish/Subscribe-Messaging unter Verwendung einer Nachrichtenstruktur
DE112011103526T5 (de) Zwischenspeichern von Inhalt mit entfernt angeordneten Filterdiensten in einem Funkzugangsnetz
DE102016203598A1 (de) Gemeinschaftliche sammlung von diagnosedaten von softwareprogrammen
DE112012001357T5 (de) Verwalten einer Portalanwendung
DE102014000289B4 (de) Webservervorrichtung, Steuerverfahren und Programm dafür
DE102017123055A1 (de) Slave-Vorrichtung
DE112021004695T5 (de) Umgang mit zurückstellbaren netzwerkanforderungen

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R079 Amendment of ipc main class

Free format text: PREVIOUS MAIN CLASS: G06F0013000000

Ipc: G06F0012120000

R082 Change of representative

Representative=s name: LIFETECH IP SPIES & BEHRNDT PATENTANWAELTE PAR, DE

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

R082 Change of representative

Representative=s name: SPIES & BEHRNDT PATENTANWAELTE PARTG MBB, DE

R016 Response to examination communication
R018 Grant decision by examination section/examining division
R084 Declaration of willingness to licence
R020 Patent grant now final