-
Die
vorliegende Erfindung betrifft ein Verfahren und eine Vorrichtung
zum dynamischen Vorabrufen von Daten oder Objekten für Clients,
wobei die Clients vorzugsweise einer Hierarchie von Proxy-Servern
zugeordnet werden, beispielsweise können sie am Vorabrufen von
Web-Objekten im World Wide Web beteiligt sein. BEGRIFFSGLOSSAR
Internet: | Netz
von Netzwerken und Gateways, die die TCP/IP-Protokollgruppe verwenden. |
Client: | Ein
Client ist ein Computer, der Befehle an den Server ausgibt, der
die dem Befehl zugeordnete Task ausführt. |
Server: | Jeder
Computer, der eine Task auf den Befehl eines anderen Computers hin
ausführt,
ist ein Server. Ein Web-Server unterstützt normalerweise einen oder
mehrere Clients. |
World
Wide Web (WWW oder Web): | Die
Internetanwendung, die Benutzer nach Daten in der Internetvermittlungsverbindung
von Server zu Server und Datenbank zu Datenbank suchen lässt, indem
hervorgehobene Wörter
oder Phrasen von Interesse (bekannt als Hyperlinks) ausgewählt ("angeklickt") werden. Ein WWW-Internetserver unterstützt Clients
und stellt Daten für
diese bereit. Das Web, das als das Internet mit allen als URLs adressierten
Ressourcen betrachtet werden kann, verwendet HTML zum Anzeigen der URLs
entsprechenden Daten und stellt eine Zeige-und-Anklick-Schnittstelle
(point-and-click interface) zu anderen URLs bereit. |
Universal
Resource Locator (URL): | Der
URL dient dem Verfahren zum eindeutigen Kennzeichnen oder Adressieren
von Daten im Internet und kann als Web-Dokumentenversion einer eMail-Adresse betrachtet
werden. Auf URLs kann mittels eines Hyperlink zugegriffen werden.
Ein Beispiel für eine
URL-Kennzeichnung ist "http://www.philipyu.com:80/table.html". Der URL hat vier
Komponenten. Ganz links im Beispiel gibt die erste Komponente das
zu verwendende Protokoll an (in diesem Fall http), vom Rest des
Locator durch einen ":" getrennt. Die nächste Komponente
ist der Hostname oder die IP-Adresse des Zielhost; diese Komponente
wird auf der linken Seite vom doppelten Schrägstrich "//" und
auf der rechten Seite von einem einzelnen Schrägstrich "/" (oder
wahlweise einem ":") begrenzt. Die Anschlussnummer
ist eine zusätzliche
Komponente und wird links vom Hostnamen durch einen ":" und rechts von einem einzelnen Schrägstrich "/" begrenzt. Die vierte Komponente ist
der eigentliche Dateiname oder Programmname (in diesem Beispiel
table.html), wobei weitere einzelne Schrägstriche verwendet werden,
um Verzeichnisse und Unterverzeichnisse auf herkömmliche Weise zu trennen. In
diesem Beispiel bedeutet die Erweiterung „.html", dass es sich um eine HTML-Datei handelt. |
Hypertext
Markup Language (HTML): | HTML
ist eine Sprache, die von Web-Servern zum Erzeugen und Verbinden
von Dokumenten verwendet wird, die von Web-Clients betrachtet werden.
HTML erzeugt Hypertext-Dokumente. |
Hypertext
Transfer Protocol (HTTP): | HTTP
ist ein Beispiel eines zustandslosen Protokolls, in dem jede Anforderung
von einem Client an einen Server unabhängig bearbeitet wird. Der Server
hat keinen Datensatz von früheren
Verbindungen. Am Anfang eines URL zeigt "http:" den anfordernden Client an, und der
Datenaustausch mit dem Zielserver muss unter Verwendung des HTTP-Protokolls
bezüglich
der angegebenen Ressource erfolgen. |
Internet-Browser
oder Web-Browser: | ein
Hilfsprogramm einer grafischen Oberfläche, das Internetprotokolle ausführt, beispielsweise HTTP,
und Ergebnisse auf dem Bildschirm des Benutzers anzeigt. Der Browser
kann als ein Leitfaden durch das Internet fungieren, komplett mit
bildlichen Arbeitsoberflächen,
Verzeichnissen und Suchmaschinen für den Fall, dass ein Benutzer
im Internet "surft". In dieser Anwendung
ist der Web-Browser ein Client-Dienst, der mit dem World Wide Web
Daten austauscht. |
Client-Cachespeicher: | Client-Cachespeicher werden
normalerweise als eine primäre
Gruppe (Cachespeicher) von Objekten verwendet, auf die der Client
zugreift. In der WWW-Umgebung werden Client-Cachespeicher normalerweise von
Web-Browsern realisiert und können
Objekte zwischenspeichern, auf die während eines aktuellen Aufrufs
zugegriffen wird, d.h. im Falle eines nichtpermanenten Cachespeichers,
oder sie können
Objekte über Aufrufe
hinweg zwischenspeichern. |
Zwischenspeicher-Proxys
(caching proxies): | Spezialisierte
Server in einem Netz, die als Agenten im Auftrag des Client fungieren,
um ein Objekt zu finden, wobei möglicherweise
eine zwischengespeicherte Kopie rückübertragen wird. Zwischenspeicher-Proxys
dienen normalerweise als sekundäre
Cachespeicher oder Cachespeicher einer höheren Ebene, da sie infolge
von Cachespeicher-Fehlschlägen
von Client-Cachespeichern aufgerufen werden. |
META-Kennzeichnung (META-tagging): | Die
Zuordnung von Daten zu einem gegebenen Objekt. Beispielsweise können in
HTTP Daten in den Feldern des HTTP-Vorsatzes sowohl Anforderungen
als auch Antworten zugeordnet werden. Ein HTTP-Client kann beispielsweise
den URL angeben, von dem eine rückübertragene Seite
angefordert wurde. |
-
Da
das World Wide Web (WWW oder Web) zunehmend beliebter wird, hat
der Datenverkehr über
das Internet deutlich zugenommen. Das Web wurde nun zu einem der
Hauptengpässe
hinsichtlich der Netzleistung. Beispielsweise kann ein Webbenutzer
erhebliche Verzögerungen
erfahren, wenn er Dokumente oder Daten anfordert und über eine
langsame Netzverbindung mit einem Server verbunden ist. Die Übertragung
der Webdaten über
das Netz an den Benutzer erhöht
des Weiteren den Grad an Datenverkehr im Netz. Der erhöhte Datenverkehr
verringert die für
die Anforderungen von anderen Benutzern verfügbare Bandbreite, was zu zusätzlichen
möglichen
Verzögerungen
beiträgt.
-
Um
Latenzzeiten für
Clients zu verringern, wurden nach dem Stand der Technik zwischengespeicherte
Kopien von beliebten Datendokumenten in näher beim Benutzer befindlichen
Netzknoten gespeichert, von denen aus die Zugriffslatenzzeiten annehmbarer
sind. Die Zwischenspeicherung kann an verschiedenen Stellen im Netz
ausgeführt
werden. Beispielsweise kann eine große Universität oder Firma
ihren eigenen lokalen Cachespeicher aufweisen, aus dem alle an diesem
Netz teilnehmenden Benutzer Dokumente abrufen können. Ein lokaler Cachespeicher
kann in Form eines spezialisierten Server realisiert werden.
-
Ein
spezialisierter Server, der als Zwischenspeicher-Proxy bezeichnet
wird, kann als ein Agent im Auftrag von Clients fungieren, um eine
mögliche zwischengespeicherte
Kopie von angeforderten Daten zu suchen. Zwischenspeicher-Proxys
dienen normalerweise als sekundäre
Cachespeicher oder Cachespeicher der höheren Ebene, da sie sich lediglich mit
Fehlschlägen
befassen, die von Client-Cachespeichern übrig blieben. Client-Cachespeicher sind in
verschiedenen Web-Browsern integriert. Client-Cachespeicher können entweder
nur die Dokumentenzugriffe während
des aktuellen Aufrufs speichern (nichtpermanenter Cachespeicher,
beispielsweise Mosaic) oder Dokumente über Aufrufe hinweg zwischenspeichern.
-
In
der Vergangenheit fand eine Beschäftigung mit der Zwischenspeicherung
von Web-Dokumenten hauptsächlich
im Bereich der bedarfsorientierten Zwischenspeicherung (on-demand
caching) statt. Eine bedarfsorientierte Zwischenspeicherung bedeutet,
dass eine Zwischenspeicherungsentscheidung getroffen wird, nachdem
ein Objekt angefordert wurde. Beispielsweise beschreiben Abrams
et. al., "Caching
Proxies: Limitations and Potentials", Proc. 4th International
World Wide Web Conference, 1996, verschiedene bedarfsorientierte
Zwischenspeicherungsmaßnahmen,
die für
das Web geprüft
wurden.
-
"Prefetching in World
Wide Web" von Wang und
Cowcroft, IEEE GlobeCom 1996, beschreibt vom Client eingeleitete
Vorabrufvorgänge
im World Wide Web (WWW). Es wird vorgeschlagen, vom Server eingeleitete
Vorabrufvorgänge
zu verwenden, indem der Server veranlasst wird, Seiten für den Client
vorauszuladen, dies wird jedoch aufgrund der Notwendigkeit zur Änderung
sowohl des Server als auch des Client als weniger vorteilhaft als
vom Client eingeleitete Vorabrufvorgänge betrachtet. "Prefetching links on
the WWW" von Jiang
und Kleinrock, IEEE International Conference on Communications,
1997, beschreibt die vorzugsweise im Client stattfindende Verwaltung
von statistischen Daten bezüglich
Datenbezugsmustern, so dass Objekte, auf die mit hoher Wahrscheinlichkeit
Bezug genommen wird, vorabgerufen werden können. "An Interactive Prefetching Proxy Server
for Improvement of WWW Latency" von Chinen
und Yamaguchi, INET 97, beschreibt einen in einem Proxy-Server ausgeführten Vorabrufalgorithmus,
der auf eigene Initiative Seiten abruft, auf die in angeforderten
Seiten Bezug genommen wird.
-
In
einem Internet-Service-Provider-(ISP-)Netz oder einem Firmennetz
(corporate network) können
verschiedene regionale Proxys oder Abteilungs-Proxys in der Proxy-Hierarchie
ein unterschiedliches Bezugsverhalten beobachten oder mit unterschiedlichem
Netzverkehr und Verzögerungen
konfrontiert werden. Das Vorhandensein der Proxy-Hierarchie kompliziert
außerdem
die Vorabrufentscheidung, ob alle zwischengeschalteten Proxys, der
Client oder eine Teilgruppe von diesen den Vorabrufvorgang ausführen müssen. Folglich
besteht ein Bedarf an einem Vorabrufverfahren und -system, das Vorabrufaktivitäten hinsichtlich
der Proxy-Serverhierarchie und den zugeordneten Clients leistungsfähig koordinieren
kann.
-
Dementsprechend
stellt die vorliegende Erfindung ein Verfahren bereit, wie es in
den Ansprüchen
definiert wird, um Daten aus einem Inhaltsserver über ein
Datenübertragungsnetz
vorabzurufen, wobei das Datenübertragungsnetz
einen oder mehrere Proxy-Server und einen oder mehrere Clients enthält, wobei
das Verfahren die folgenden Schritte umfasst: Anfordern von Daten
aus dem Inhaltsserver über
mindestens einen Proxy-Server
in einem Client; Einrichten von Vorabrufhinweisdaten (prefetch hint information)
im Server, die Daten kennzeichnen, die im Anschluss an die angeforderten
Daten wahrscheinlich vom Client angefordert werden, auf der Grundlage
von vorherigen Abruf- oder Zugriffsvorgängen durch die Clients; Kommentieren
der angeforderten Daten im Server mit den Vorabrufhinweisdaten und
Rückübertragen
der angeforderten Daten zusammen mit den Vorabrufhinweisdaten über den mindestens
einen Proxy-Server an den Client; und Vorabrufen von Daten im Client
oder in dem mindestens einen Proxy-Server auf der Grundlage der
Vorabrufhinweisdaten und der angeforderten Daten, wodurch die abgerufenen
Daten problemloser zugänglich
gemacht werden.
-
Normalerweise
umfassen die angeforderten Daten angeforderte Objekte, und die Auswahldaten umfassen
Vorabrufkandidatenobjekte (prefetch candidate objects), beispielsweise
Internetdaten. In diesem Fall kann das angeforderte Objekt durch
einen den Internetdaten zugeordneten Hypertext-Transfer-Protocol-(HTTP-)Link
auf das Auswahlobjekt Bezug nehmen, wobei der Proxy-Server die Beziehung des
Auswahlobjekts zu dem angeforderten Objekt durch den Universal Resource
Locator (URL) des angeforderten Objekts kennzeichnet, der in einem
Objektvorsatz des angeforderten Objekts gespeichert ist.
-
Vorzugsweise
enthält
der Schritt des Einrichtens von Vorabrufhinweisdaten die folgenden
Schritte: Ermitteln eines Datenbezugsmusters der Clients auf der
Grundlage der vergangenen Abrufvorgänge oder früheren Zugriffsvorgänge auf
die angeforderten Daten; und Definieren von Vorabrufhinweisdaten
aus dem Datenbezugsmuster. Dies kann durch die folgenden Schritte
ausgeführt
werden: Protokollieren von den Clients zugeordneten Datenbezugsmustern; Organisieren
der Datenbezugsmuster in Gruppen von Objektkennzeichnern (object
identifiers), wobei die Gruppen von Objektkennzeichnern gemäß Beziehungen
zwischen den angeforderten Objekten und Vorabrufkandidatenobjekten
organisiert werden; und Feststellen, welche der Gruppen ausreichende
Beziehungen zwischen den Vorabrufkandidatenobjekten und den angeforderten
Objekten aufweisen, um ein Vorabrufen der Vorabrufkandidatenobjekte
als die Auswahldaten zu gewährleisten.
Folglich beruht das Datenbezugsmuster der Clients vorteilhafterweise auf
den vorherigen Abrufvorgängen
oder früheren Zugriffen
auf die angeforderten Daten, wobei das Datenbezugsmuster so ausgewählt wird,
dass es alle allgemeinen Tendenzen in vergangenen Abruf- oder Zugriffsvorgängen durch
verschiedene der Clients darstellt, die einem der Proxy-Server zugeordnet sind.
Dies kann sodann zum Definieren der Vorabrufhinweisdaten verwendet
werden.
-
Die
Schritte des Protokollierens und Organisierens beinhalten vorzugsweise
das Einrichten von Datenbanken zum Speichern von Datenbezugsmustern
in den Proxy-Servern; das Anordnen von Feldern in jeder der Datenbanken,
wobei die Felder Objektkennzeichner und Objektzählwerte enthalten, wobei die
Objektkennzeichner die angeforderten Objekte voneinander unterscheiden;
wobei die Objektzählwerte
die Anzahl von Malen anzeigen, die die angeforderten Objekte nach
Beobachtung von einem der Server angefordert werden; und Zuordnen
von Zugriffslisten zu den Datenbanken, wobei jede der Zugriffslisten
ein oder mehrere Vorabrufkandidatenobjekte enthält, die jedem angeforderten
Objekt zugeordnet werden.
-
Eine
solche Datenbank kann verwendet werden, um die Beziehung zwischen
angeforderten Objekten und Vorabrufkandidatenobjekten zu definieren und
eine Zugriffsstatistik bezüglich
der angeforderten Objekte und der Vorabrufkandidatenobjekte zu protokollieren;
wobei die Zugriffsstatistik eine Eltern-Objekt-Zugriffshäufigkeit von angeforderten
Objekten und eine Kind-Objekt-Zugriffshäufigkeit der Vorabrufkandidatenobjekte
enthält;
wobei die Eltern-Objekt-Zugriffshäufigkeit die Anzahl von Malen
darstellt, die ein bestimmtes der angeforderten Objekte von mindestens
einem der Clients angefordert wird; wobei die Kind-Objekt-Zugriffshäufigkeit
die Anzahl von Malen darstellt, die eines oder mehrere der Vorabrufkandidatenobjekte
unmittelbar im Anschluss an den Zugriff auf das bestimmte der Objekte
tatsächlich
angefordert werden. Dies ermöglicht
es, dass die Vorabrufliste von Vorabrufkandidatenobjekten auf der Grundlage
des Verhältnisses
der Kind-Objekt-Zugriffshäufigkeit
zu der der Kind-Objekt-Zugriffshäufigkeit
zugeordneten Eltern-Objekt-Zugriffshäufigkeit ausgewählt wird,
wobei die Vorabrufliste nur Vorabrufkandidatenobjekte mit Verhältnissen
enthält,
die eine Schwellenwertwahrscheinlichkeit überschreiten.
-
Im
Allgemeinen wird nur eine Teilmenge von Vorabrufkandidatenobjekten
tatsächlich
vorabgerufen und in einem der Proxy-Server oder einem der Clients
empfangen, wobei die Auswahl dieser Teilmenge der Vorabrufkandidatenobjekte
als Auswahldaten normalerweise auf Faktoren wie beispielsweise der
verfügbaren
Speichergröße in einem
der Proxy-Server und/oder der Zugriffszeit in einem der Proxy-Server
beruht. Folglich werden die Vorabrufkandidatenobjekte gemäß der Priorität vorabgerufen,
die einem entsprechenden Vorabrufwert zugeordnet ist.
-
In
der bevorzugten Ausführungsform
umfasst der Schritt des Kommentierens der angeforderten Daten den
Schritt des Platzierens der Vorabrufhinweisdaten in einem Vorabrufkennsatz
(prefetch label) mit einem Format der Platform for Internet Content
Selection (PICS) oder einem mit dem PICS-Format kompatiblen Kennsatzprotokoll.
In einer bestimmten Ausführung
dieses (PICS-)Formates werden eine Objektkennzeichnerkategorie und
eine Bezugskennzeichnerkategorie definiert, und das Verfahren enthält außerdem den
Schritt des Rückübertragens
der Bezugskennzeichnerkategorie an den Inhaltsserver, um alle Vorabrufkandidatenobjekte
zu kennzeichnen, auf die tatsächlich
Bezug genommen wurde. Das Organisieren der Vorabrufhinweisdaten gemäß einem
Protokoll der Platform for Internet Content Selection oder einem
PICS-kompatbilen Protokoll verwendet ein bereits von vielen Browsern
unterstütztes
Format.
-
Normalerweise
gibt es eine Hierarchie der Proxy-Server. Unter Definition eines
Sendeknotens und eines Empfangsknotens in dieser Hierarchie werden
die Vorabrufhinweisdaten vorzugsweise von einem anfänglichen
Status zu einem endgültigen Status
geändert,
wobei der anfängliche
Status vom Sendeknoten und der endgültige Status vom Empfangsknoten
festgelegt wird. Die Vorabrufhinweisdaten im endgültigen Status
bilden sodann die Grundlage für
die letzte Vorabrufentscheidung (unter der Voraussetzung, dass das
Abrufen von Auswahldaten vom Empfangsknoten eingeleitet wird).
-
Mit
anderen Worten, die Vorabrufhinweisdaten können interpretiert und aktualisiert
werden, wenn sie durch die Hierarchie von den Proxy-Servern an die
Clients übertragen
werden. Vorzugsweise aktualisiert ein Proxy-Server die Vorabrufhinweisdaten, falls
lokale Bezugnahmen auf die angeforderten Daten vorliegen und falls
der Zählwert
des Server auf lokaler Ebene einen Mindestschwellenzählwert überschreitet
(d.h., zu diesem Zweck ist daher eine zuverlässige Statistik lokal verfügbar). Außerdem können die
Vorabrufhinweisdaten auf der Grundlage des Zwischenspeicherstatus
in der Proxy-Hierarchie aktualisiert werden (um beispielsweise anzuzeigen,
wo in der Hierarchie ein bestimmtes Vorabrufkandidatenobjekt zwischengespeichert
werden kann).
-
Folglich
können
die Vorabrufhinweisdaten in einer Hierarchie von Proxy-Servern,
die mindestens einen einen Sendeknoten darstellenden Proxy-Server
und mindestens einen einen Empfangsknoten darstellenden Proxy-Server
enthält,
vom Sendenoten an den Empfangsknoten übertragen werden, wobei die
anfänglichen
Vorabrufhinweisdaten zu endgültigen
Vorabrufdaten geändert
werden, wobei die anfänglichen
Vorabrufhinweisdaten vom Sendeknoten und die endgültigen Vorabrufhinweisdaten
vom Empfangsknoten festgelegt werden. Die endgültigen Vorabrufhinweisdaten
werden sodann als Grundlage für die
letzte Vorabrufentscheidung verwendet. Normalerweise wird der Schritt
des Vorabrufens von Daten vom Empfangsknoten eingeleitet.
-
Außerdem stellt
die Erfindung ein Datenverarbeitungssystem zum Vorabrufen von Daten
aus einem Inhaltsserver über
ein Datenübertragungsnetz bereit,
wie es in den Ansprüchen
definiert wird, wobei das Datenübertragungsnetz
einen oder mehrere Proxy-Server und einen oder mehrere Clients beinhaltet, wobei
das System Folgendes umfasst: ein Mittel in einem Client zum Anfordern
von Daten aus dem Inhaltsserver über
mindestens einen Proxy-Server; ein Mittel zum Einrichten von Vorabrufhinweisdaten
im Server, die auf der Grundlage von vorherigen Abrufvorgängen oder
Zugriffsvorgängen
durch die Clients Daten kennzeichnen, die im Anschluss an die angeforderten
Daten wahrscheinlich vom Client angefordert werden; ein Mittel zum
Kommentieren der angeforderten Daten im Server mit den Vorabrufhinweisdaten
und zum Rückübertragen
der angeforderten Daten zusammen mit den Vorabrufhinweisdaten über den
mindestens einen Proxy-Server an den Client; und ein Mittel zum
Vorabrufen von Daten im Client oder in dem mindestens einen Proxy-Server
auf der Grundlage der Vorabrufhinweisdaten und der angeforderten
Daten, wodurch die abgerufenen Daten problemloser zugänglich gemacht
werden.
-
In
einer bevorzugten Ausführungsform
umfassen die angeforderten Daten angeforderte Objekte, und die Auswahldaten
umfassen Vorabrufkandidatenobjekte, wobei jeder der Proxy- Server und mindestens
einer der Clients einen Speicher mit mindestens einer logischen
Trennung zwischen einem Hauptcachespeicher und einem Vorabrufcachespeicher
(prefetch cache) aufweist, wobei die vorabgerufenen Auswahldaten
im Vorabrufcachespeicher gespeichert werden.
-
Es
wird bevorzugt, dass das Vorabrufmittel Objekte vorabruft und die
vorabgerufenen Objekte auf der Grundlage eines Prioritätsschemas
im Vorabrufcachespeicher speichert, wobei das Prioritätsschema
Objekte mit einem höchsten
Vorabrufwert bezüglich
des verfügbaren
Speichers des Vorabrufcachespeichers zuerst speichert, wobei der
Vorabrufwert auf der Wahrscheinlichkeit einer einzelnen oder gehäuften Bezugnahme
auf die Vorabrufobjekte durch einen oder mehrere Clients beruht.
Insbesondere kann der Vorabrufwert auf einer geschätzten Zugriffswahrscheinlichkeit
beruhen, dass auf ein Vorabrufkandidatenobjekt auf der Liste der
Vorabrufhinweisdaten durch bestimmte der Clients zugegriffen wird,
und auf einem Zugriffsaufwand des Objekts auf der Grundlage der
erforderlichen Speichergröße zum Speichern
von ausgewählten
der Vorabrufkandidatenobjekte.
-
In
einer bevorzugten Ausführungsform
umfasst das Vorabrufmittel ein Vorabrufbedienprogramm (prefetch
handler), das ein Berechnungsmittel zum Berechnen des Vorabrufwertes
und ein Auswertungsmittel zum Auswerten des vom Berechnungsmittel
berechneten Vorabrufwertes beinhaltet; wobei das Berechnungsmittel
den Vorabrufwert für jeden
Vorabrufobjektkennzeichner auf der Liste der Vorabrufhinweisdaten
berechnet; wobei das Auswertungsmittel die Vorabrufwerte von mehreren
Vorabrufkandidatenobjekten auswertet und Prioritäten für die Zwischenspeicherung von Vorabrufkandidatenobjekten
vergibt, die den höchsten
Vorabrufwerten auf der Liste der Vorabrufhinweisdaten zugeordnet werden.
Das Vorabrufmittel kann ein erstes Vorabrufbedienprogramm in mindestens
einem der Proxy-Server und ein zweites Vorabrufbedienprogramm in
mindestens einem der Clients umfassen (d.h., der Vorabrufvorgang
kann an verschiedenen/mehreren Positionen in der Hierarchie ausgeführt werden).
-
Eine
bevorzugte Ausführungsform
enthält außerdem ein
Bedienprogramm für
Client-Objektanforderungen (client object request handler), das
im Speicher von einem der Clients gespeichert ist, wobei das Bedienprogramm
für Client-Objektanforderungen
den Hauptcachespeicher und den Vorabrufcachespeicher nach einem
angeforderten Objekt durchsucht, bevor es das angeforderte Objekt
aus einem Proxy-Server
oder aus dem Netz anfordert, wobei das Bedienprogramm für Client-Objektanforderungen
den Inhaltsserver oder den Proxy-Server benachrichtigt, falls das
Objekt sich im Vorabrufcachespeicher befindet, indem eine Vorabrufbezugsnachricht
(prefetch referenced message) an den Server erzeugt wird, die anzeigt,
dass tatsächlich
durch den Client auf das Vorabrufobjekt zugegriffen wurde. Ähnlich wird
es bevorzugt, dass mindestens einer der Proxy-Server ein Bedienprogramm
für Vorabrufbezugsnachrichten
(prefetch referenced message handler) zum Weiterleiten einer Vorabrufbezugsnachricht
nach dem Aufrufen einer Cachespeicher-Verwaltungsroutine enthält, falls
ein angefordertes Objekt sich im Vorabrufcachespeicher befindet. Dadurch
wird sichergestellt, dass der Server einen korrekten Datensatz der
Zugriffsstatistik aufrechterhalten kann, auch wenn er nicht direkt
wegen eines Kind-Objekts kontaktiert wird, da es aus einem Vorabrufcachespeicher
im Client oder in einem Proxy-Server
verfügbar
ist.
-
Außerdem stellt
die Erfindung einen Inhalts- oder Proxy-Server zur Verwendung im
Datenverarbeitungssystem bereit, wie er in den Ansprüchen definiert
wird, wobei die angeforderten Daten angeforderte Objekte umfassen
und wobei die vorabgerufenen Daten Vorabrufkandidatenobjekte umfassen, wobei
der Server Folgendes enthält:
eine Statistiktabelle zum Protokollieren einer Zugriffsstatistik
hinsichtlich der angeforderten Objekte und der Vorabrufkandidatenobjekte;
wobei die Zugriffsstatistik eine Eltern-Objekt-Zugriffshäufigkeit
von angeforderten Objekten und eine Kind-Objekt-Zugriffshäufigkeit
der Vorabrufkandidatenobjekte enthält; wobei die Eltern-Objekt-Zugriffshäufigkeit
die Anzahl von Malen darstellt, die ein bestimmtes der angeforderten
Objekte von mindestens einem der Clients angefordert wird; wobei
die Kind-Objekt-Zugriffshäufigkeit
die Anzahl von Malen darstellt, die eines oder mehrere der Vorabrufkandidatenobjekte
unmittelbar im Anschluss an den Zugriff auf das bestimmte der angeforderten Objekte
tatsächlich
angefordert werden; und ein Erzeugungsmittel zum Erzeugen der vorabrufhinweisdaten
auf der Grundlage von Daten in der Statistiktabelle.
-
In
einer Ausführungsform
nimmt das Erzeugungsmittel Eingaben von ersten Zählwerten, zweiten Zählwerten,
Kind-Objektkennzeichnern
und Eltern-Objektkennzeichnern aus der Statistiktabelle entgegen,
wobei das Erzeugungsmittel ein Auswertungsmittel zum Auswerten der
Zugriffsbeziehung zwischen Eltern-Objekten und ihren zugeordneten Kind-Objekten
enthält,
wobei das Auswertungsmittel Kind-Objektkennzeichner auf eine Liste
von Vorabrufhinweisdaten platziert, falls unmittelbar vor und im Anschluss
an Bezugnahmen auf entsprechenden Eltern-Objekte durch die Clients mit einer
ausreichenden Häufigkeit
auf die Kind-Objekte Bezug genommen wird. Die ausreichende Häufigkeit
kann auf dem Verhältnis
von Kind-Zugriffen zu entsprechenden Eltern-Zugriffen beruhen. Normalerweise
beinhaltet dies die folgenden Schritte: Berechnen eines Verhältnisses
des zweiten Zählwerts
zum ersten Zählwert für jeden
der Eltern-Objektkennzeichner; Vergleichen des Verhältnisses
mit einem Hinweisschwellenwert; und Gruppieren von Kind-Objekten
und zugeordneten Elternobjekten auf der Liste von Vorabrufhinweisdaten
bzw. Zuordnen zu dieser, falls das Verhältnis den Hinweisschwellenwert überschreitet.
-
Vorzugsweise
umfasst der Server außerdem ein
Statistikaktualisierungsmittel zum Aktualisieren der Statistiktabelle
auf der Grundlage eines tatsächlich
angeforderten Kind-Objekts; wobei das Statistikaktualisierungsmittel
als Erstes nach einer Identität eines
Bezugsobjekts der Eltern-Objekte sucht, wobei vor dem tatsächlich angeforderten
Kind-Objekt auf das Bezugsobjekt Bezug genommen wird, wobei der entsprechende
zweite Zählwert
des tatsächlich
angeforderten Kind-Objekts in der Statistiktabelle aktualisiert
wird. Außerdem
muss die Statistiktabelle beim Empfang einer Vorabrufbezugsnachricht
von einem Bedienprogramm für
Vorabrufbezugsnachrichten aktualisiert werden.
-
Falls
der Server ein Proxy-Server ist, wird es bevorzugt, dass dieser
außerdem
ein Vorabrufaktualisierungsmittel (prefetch updating means) zum
Empfangen und Aktualisieren der Liste von Vorabrufhinweisdaten umfasst.
Das Vorabrufaktualisierungsmittel vergleicht die ersten Zählwerte mit
ersten lokalen Schwellenzählwerten
und ruft für
jeden der Kind-Objektkennzeichner, bei denen die ersten Zählwerte
die ersten lokalen Schwellenzählwerte überschreiten, das
Erzeugungsmittel auf, wobei das Vorabrufaktualisierungsmittel die
ursprüngliche
Liste von Vorabrufhinweisdaten beibehält, falls die ersten Zählwerte die
ersten lokalen Schwellenzählwerte
nicht überschreiten.
In einem komplexeren Lösungsansatz
vergleicht das Vorabrufaktualisierungsmittel die ersten Zählwerte
mit ersten und zweiten lokalen Schwellenzählwerten und (i) behält die ursprüngliche
Liste von Vorabrufhinweisdaten bei, falls die ersten Zählwerte die
ersten lokalen Schwellenzählwerte
nicht überschreiten;
(ii) ändert
die ursprüngliche
Liste von Vorabrufhinweisdaten, falls die ersten Zählwerte
die ersten lokalen Schwellenzählwerte,
jedoch nicht die zweiten lokalen Schwellenzählwerte überschreiten; und (iii) ersetzt
die ursprüngliche
Liste von Vorabrufhinweisdaten, falls die ersten Zählwerte
sowohl die ersten lokalen Schwellenzählwerte als auch die zweiten
lokalen Schwellenzählwerte überschreiten.
-
Vorzugsweise
enthält
der Server außerdem Folgendes:
ein Proxy-Objektbedienprogramm
(proxy objekt handler) zum Rückübertragen
eines angeforderten Objekts an einen Proxy-Server der unteren Ebene
oder an einen Client, der das angeforderte Objekt anforderte, wobei
das Proxy-Objektbedienprogramm das angeforderte Objekt rücküberträgt und die
Statistiktabelle dementsprechend aktualisiert, falls das angeforderte
Objekt kein Vorabrufobjekt ist; und eine Vorabrufcachespeicher-Verwaltungseinrichtung
(prefetch cache manager) zum Verwalten eines Vorabrufcachespeichers.
Folglich rücküberträgt das Proxy-Objektbedienprogramm
ein angefordertes Objekt aus dem Vorabrufcachespeicher an einen
anfordernden Client oder Proxy- Server
und markiert das Objekt als aus dem Vorabrufcachespeicher löschbar,
falls das Objekt entsprechend einer Vorabrufanforderung angefordert
wurde. Das Proxy-Objektbedienprogramm überträgt eine
Objektanforderung an einen anderen Server, falls das angeforderte
Objekt sich nicht in einem Hauptcachespeicher oder im Vorabrufcachespeicher
befindet. Das Proxy-Objektbedienprogramm aktualisiert die Statistiktabelle
entsprechend, falls das angeforderte Objekt keiner Vorabrufanforderung
zugeordnet ist und falls das angeforderte Objekt sich im Vorabrufcachespeicher
oder im Hauptcachespeicher befindet.
-
Unter
einem anderen Aspekt betrachtet stellt die Erfindung ein Verfahren
zum Vorabrufen von Auswahlobjekten aus einem Inhaltsserver bereit,
um die Auswahlobjekte für
Clients, die einem oder mehreren Proxy-Servern über ein Datenübertragungsnetz
zugeordnet sind, sofort verfügbar
zu machen; wobei das Verfahren die folgenden Schritte umfasst:
- a) Anfordern von angeforderten Objekten aus mindestens
einem der Proxy-Server;
- b) Ermitteln von Datenbezugsmustern von entsprechenden Clients
auf der Grundlage der vergangenen Abruf- oder Zugriffsvorgänge auf
angeforderte Objekte durch die Clients;
- c) Entwickeln von Vorabrufhinweisdaten aus den Datenbezugsmustern
in eine Liste von Vorabrufhinweisdaten;
- d) Kommentieren der angeforderten Objekte mit den Vorabrufhinweisdaten;
- e) Vorabrufen von Auswahlobjekten aus mindestens einem der Server
auf der Grundlage der Vorabrufhinweisdaten und aktuell angeforderter
Objekte.
-
Folglich
umfassen die vorabgerufenen Auswahldaten ein Vorabrufkandidatenobjekt;
und der Schritt des Einrichtens von Vorabrufhinweisdaten umfasst
außerdem
das Einrichten von Vorabrufhinweisdaten in dem Sendeknoten in einer
Hierarchie der Proxy-Server; wobei das Vorabrufkandidatenobjekt
durch eine Hierarchie der Proxy-Server geleitet wird; und die Auswahldaten
zum Vorabrufen in einem Empfangsknoten in der Hierarchie beruhen
auf den Vorabrufhinweisdaten.
-
Normalerweise
ist eine Proxy-Serverhierarchie mit dem Netz verbunden, wobei die
Proxy-Serverhierarchie einen Server der unteren Ebene enthält, der
eine engere Verbindung mit den Clients aufweist als andere Proxy-Server.
In einer bevorzugten Ausführungsform
werden die Vorabrufhinweisdaten durch die Proxy-Serverhierarchie
aktualisiert, falls lokale Bezugnahmen auf das angeforderte Objekt
vorliegen und falls der Zählwert
des Server auf lokaler Ebene einen Mindestschwellenzählwert überschreitet;
alternativ (oder zusätzlich)
können
die Vorabrufhinweisdaten aktualisiert werden, indem der Cachespeicherstatus
in der Hierarchie der höheren Ebene
analysiert wird, wobei die höchste
Ebene der Hierarchie am engsten mit dem Netz verbunden ist.
-
Unter
einem anderen Aspekt betrachtet stellt die Erfindung ein Verarbeitungssystem
zum Verbessern eines Datenflusses von Servern zu Clients über ein
Netz bereit, wobei das Verarbeitungssystem Folgendes umfasst:
mit
dem Netz verbundene Proxy-Server;
einen mit dem Netz verbundenen
Inhaltsserver;
Clients, die zum Datenaustausch mit einem oder mehreren
der Proxy-Server konfiguriert sind;
eine Statistiktabelle,
die in mindestens einem der Proxy-Server gespeichert wird, wobei die Statistiktabelle
Eltern-Objektkennzeichner
und zugeordnete Kind-Objektkennzeichner speichert, wobei die Statistiktabelle
erste Zählwerte
von Eltern-Objekten enthält,
wobei die ersten Zählwerte
die Häufigkeit
darstellen, mit der durch die Clients auf Eltern-Objekte Bezug genommen wird, wobei die
Statistiktabelle zweite Zählwerte
von Kind-Objekten enthält,
wobei die zweiten Zählwerte
die Häufigkeit
darstellen, mit der auf die entsprechenden Kind-Objekte Bezug genommen
wird, nachdem auf ausgewählte
der Eltern-Objekte Bezug genommen wurde; und
ein Erzeugungsmittel
zum Erzeugen einer Liste von Vorabrufhinweisdaten durch die Aufnahme
von Eingaben der ersten Zählwerte
und der entsprechenden zweiten Zählwerte,
um die Liste von Vorabrufhinweisdaten abzuleiten, wobei das Erzeugungsmittel
Folgendes beinhaltet:
ein Berechnungsmittel zum Berechnen eines
Verhältnisses
des zweiten Zählwerts
zum ersten Zählwert für jeden
der Eltern-Objektkennzeichner;
ein Vergleichsmittel zum Vergleichen
des Verhältnisses
mit einem Hinweisschwellenwert, wobei das Vergleichsmittel Kind-Objekte
und zugeordnete Eltern-Objekte auf der Liste von Vorabrufhinweisdaten gruppiert
bzw. dieser zuordnet, falls das Verhältnis den Hinweisschwellenwert überschreitet;
und
ein Vorabrufmittel zum Vorabrufen von Kind-Objekten auf
der Grundlage der Vorabrufhinweisdaten und von Eltern-Objekten, die tatsächlich von
den Clients angefordert wurden.
-
In
einer bevorzugten Ausführungsform
weist jeder der Proxy-Server
einen ersten Prozessor, einen ersten Speicher und ein erstes Speichermittel
zum Speichern von Daten auf; wobei der erste Speicher mindestens
eine logische Trennung zwischen einem ersten Hauptcachespeicher
und einem ersten Vorabrufcachespeicher aufweist; der Inhaltsserver
weist einen zweiten Prozessor, einen zweiten Speicher und ein zweites
Speichermittel zum Speichern von Daten auf; und mindestens einer
der Clients weist einen dritten Prozessor, einen dritten Speicher
und ein drittes Speichermittel zum Speichern von Daten auf, wobei
der dritte Speicher mindestens eine logische Trennung zwischen einem
zweiten Hauptcachespeicher und einem zweiten Vorabrufcachespeicher
aufweist, wobei das Vorabrufbearbeitungsmittel Kind-Objekte im ersten
Vorabrufcachespeicher oder im zweiten Vorabrufcachespeicher speichert.
-
In
einer bevorzugten Ausführungsform
enthält
das Vorabrufmittel ein Berechnungsmittel zum Berechnen eines Vorabrufwerts
und ein Auswertungsmittel zum Auswerten des vom Berechnungsmittel
berechneten Vorabrufwerts; wobei das Berechnungsmittel für jeden
Kind-Objektkennzeichner auf der Liste von Vorabrufhinweisdaten einen
Vorabrufwert berechnet und Prioritäten für die Zwischenspeicherung von
Kind-Objekten mit den höchsten
Vorabrufwerten auf der Liste von Vorabrufhinweisdaten vergibt, wobei
das Vorabrufbedienprogrammmittel den verfügbaren Speicherbereich im Vorabrufcachespeicher
verwaltet.
-
Vorzugsweise
enthält
das System außerdem Folgendes:
ein Vorabrufaktualisierungsmittel zum Aktualisieren der Liste von
Vorabrufhinweisdaten; wobei das Vorabrufaktualisierungsmittel die
ersten Zählwerte
mit ersten lokalen Schwellenzählwerten und
zweiten lokalen Schwellenzählwerten
vergleicht, wobei die ersten lokalen Schwellenzählwerte auf der Statistik von
einem Server beruhen, wobei die zweiten lokalen Schwellenzählwerte
auf der Statistik von einem anderen Server beruhen, wobei das Vorabrufaktualisierungsmittel
für jeden
der Kind-Objektkennzeichner,
für den
die ersten Zählwerte
sowohl die ersten lokalen Schwellenzählwerte als auch die zweiten lokalen
Schwellenzählwerte überschreiten,
das Erzeugungsmittel aufruft; wobei das Vorabrufaktualisierungsmittel
die ursprüngliche
Liste von Vorabrufhinweisdaten beibehält, falls die ersten Zählwerte
die ersten lokalen Schwellenzählwerte
nicht überschreiten.
-
Es
wird bevorzugt, dass ein solches System außerdem Folgendes enthält:
ein
Statistikaktualisierungsmittel zum Aktualisieren der Statistiktabelle;
ein
Proxy-Objektbedienprogramm, das in einem der Proxy-Server gespeichert
wird, wobei das Proxy-Objektbedienprogramm eine Routine zur Aktualisierung der
Liste von Vorabrufhinweisdaten (prefetch hint information list update
routine) aufruft, wobei das Proxy-Objektbedienprogramm ein angefordertes
Objekt an einen Proxy-Server der unteren Ebene rücküberträgt, falls der Proxy-Server
der unteren Ebene das angeforderte Objekt anforderte, wobei das
Proxy-Objektbedienprogramm das angeforderte Objekt rücküberträgt und das
Statistikaktualisierungsmittel aufruft, falls das angeforderte Objekt
kein Vorabrufobjekt ist;
eine Vorabrufcachespeicher-Verwaltungseinrichtung zum
Verwalten eines Vorabrufcachespeichers, der einem der Proxy-Server zugeordnet
ist, wobei das Proxy-Objektbedienprogramm die Vorabrufcachespeicher-Verwaltungseinrichtung
aufruft, falls der Server der unteren Ebene das angeforderte Objekt nicht
anforderte;
ein Bedienprogramm für Proxy-Objektanforderungen (proxy
object request handler), das in einem der Proxy-Server gespeichert
wird, wobei das Bedienprogramm für
Proxy-Objektanforderungen Objekte an einen anfordernden der Clients
rücküberträgt und das
Objekt als aus dem Vorabrufcachespeicher löschbar markiert, falls sich
Objekte im Vorabrufcachespeicher befinden und falls das Objekt entsprechend
einer Vorabrufanforderung angefordert wurde; wobei das Bedienprogramm
für Proxy-Objektanforderungen
eine Objektanforderung an einen anderen Server überträgt, falls das angeforderte
Objekt sich nicht in einem Hauptcachespeicher oder im Vorabrufcachespeicher
befindet, wobei das Bedienprogramm für Proxy-Objektanforderungen Daten mit dem Statistikaktualisierungsmittel
austauscht, falls das angeforderte Objekt nicht der Vorabrufanforderung
zugeordnet ist und falls das angeforderte Objekt sich im Vorabrufcachespeicher
oder im Hauptcachespeicher befindet.
-
Des
Weiteren wird es bevorzugt, dass das System außerdem Folgendes enthält:
ein
Statistikaktualisierungsmittel zum Aktualisieren der Statistiktabelle;
und
ein Bedienprogramm für
Vorabrufbezugsnachrichten, das in einem der Proxy-Server gespeichert ist,
wobei das Bedienprogramm für
Vorabrufbezugsnachrichten das Statistikaktualisierungsmittel aufruft, wobei
das Bedienprogramm für
Vorabrufbezugsnachrichten eine Vorabrufbezugsnachricht nach dem Aufrufen
einer Cachespeicherverwaltungsroutine weiterleitet, falls ein angefordertes
Objekt sich im Vorabrufcachespeicher befindet.
-
Außerdem stellt
die Erfindung ein Verarbeitungssystem zum Verbessern eines Datenflusses von
Servern zu Clients über
ein Netz bereit, wobei das Verarbeitungssystem Folgendes umfasst:
mit
dem Netz verbundene Proxy-Server;
einen mit dem Netz verbundenen
Inhaltsserver;
Clients, die so konfiguriert sind, dass sie
mit einem oder mehreren der Proxy-Server Daten austauschen;
eine
Statistiktabelle, die im Inhaltsserver und in mindestens einem der
Proxy-Server gespeichert ist, wobei die Statistiktabelle Eltern-Objektkennzeichner und
zugeordnete Kind-Objektkennzeichner speichert, wobei die Statistiktabelle
erste Zählwerte
von Eltern-Objekten enthält,
wobei die ersten Zählwerte die
Häufigkeit
darstellen, mit der durch die Clients auf Eltern-Objekte Bezug genommen
wird, wobei die Statistiktabelle zweite Zählwerte von Kind-Objekten enthält, wobei
die zweiten Zählwerte
die Häufigkeit darstellen,
mit der zeitlich unmittelbar auf die entsprechenden Kind-Objekte
Bezug genommen wird, nachdem auf ausgewählte der Eltern-Objekte Bezug
genommen wurde;
ein Erzeugungsmittel, das Eingaben von ersten
Zählwerten,
zweiten Zählwerten,
Kind-Objektkennzeichnern und Eltern-Objektkennzeichnern aus der Statistiktabelle
entgegennimmt, wobei das Erzeugungsmittel ein Auswertungsmittel
zum Auswerten der Zugriffsbeziehung zwischen Eltern-Objekten und
ihren zugeordneten Kind-Objekten beinhaltet, wobei das Auswertungsmittel
Kind-Objektkennzeichner auf eine Liste von Vorabrufhinweisdaten
platziert, falls unmittelbar im Anschluss an Bezugnahmen durch die
Clients auf entsprechende Eltern-Objekte
mit einer ausreichenden Häufigkeit
auf die Kind-Objekte
Bezug genommen wird; und
ein Vorabrufmittel zum Vorabrufen
von Kind-Objektkennzeichnern auf der Grundlage der Vorabrufhinweisdaten
und der tatsächlich
von den Clients angeforderten Eltern-Objekte.
-
In
einer bevorzugten Ausführungsform
umfasst das Vorabrufmittel außerdem
ein Zuordnungsmittel zum Zuordnen von Speicherprioritäten zu auf der
Liste von Vorabrufhinweisdaten gekennzeichneten Kind-Objekten und
ein selektives Speichermittel zum Speichern von ausgewählten der
Kind-Objekte gemäß den Speicherprioritäten. Das
Zuordnungsmittel ordnet Speicherprioritäten vorzugsweise auf der Grundlage
einer geschätzten
Zugriffswahrscheinlichkeit zu, mit der durch bestimmte der Clients
auf ein Kind-Objekt auf der Liste von Vorabrufhinweisdaten zugegriffen
wird, und eines Zugriffsaufwands des Kind-Objekts auf der Grundlage
einer erforderlichen Speichergröße zum Speichern
von ausgewählten
der Kind-Objekte.
-
Folglich
können
Daten in einer Proxy-Hierarchie vorabgerufen werden, um die Objektzugriffszeit durch
das Netz (d.h. das Internet) für
Clients zu verkürzen.
Die Auswahldaten werden aus einem Inhaltsserver vorabgerufen, um
diese für
Clients, die mit einem Inhaltsserver in einem Netz verbunden sind, problemlos
zugänglich
zu machen. Die Clients sind vorzugsweise mit Proxy-Servern im Netz
verbunden. Die Clients fordern Daten von mindestens einem der Proxy-Server
an. Der Inhaltsserver erzeugt Vorabrufhinweisdaten für die Clients
auf der Grundlage von vergangenen Datenzugriffsmustern der von den
Clients angeforderten Daten. Der Inhaltsserver kommentiert die angeforderten
Daten mit Vorabrufhinweisdaten. Einer oder mehrere Proxy-Server
können die
Vorabrufhinweisdaten auf der Grundlage einer dynamischen Verwendungsstatistik
dynamisch aktualisieren. Die Vorabrufhinweisdaten werden aktualisiert,
wenn das Objekt durch die Proxy-Hierarchie geleitet wird, um ausgeführte Vorabrufvorgänge, den Zwischenspeicherstatus
auf höheren
Ebenen der Proxy-Hierarchie und andere lokale Gegebenheiten widerzuspiegeln,
beispielsweise lokale Bezugsmuster. Die Auswahldaten können auf
der Grundlage der Vorabrufhinweisdaten und der angeforderten Daten aus
dem Inhaltsserver oder einem der Proxy-Server vorabgerufen werden.
Den Vorabrufhinweisdaten kann auf der Grundlage einer Bezugszugriffswahrscheinlichkeit
und Speichergegebenheiten ein Vorabrufwert zugeordnet werden. Die
Auswahldaten mit den höchsten
Vorabrufwerten auf der Liste von Vorabrufhinweisdaten werden als
Erstes zwischengespeichert und möglicherweise,
bis der Vorabrufcachespeicher voll ist.
-
Nun
wird eine bevorzugte Ausführungsform der
Erfindung lediglich beispielhaft mit Bezugnahme auf die folgenden
Zeichnungen ausführlich
beschrieben:
-
1 ist
ein Blockschaltbild, das Inhaltsserver (d.h. Web-Sites), ein Netz (d.h. das Internet),
eine Proxy-Serverhierarchie
und Clients zeigt;
-
2 ist
ein weiteres Blockschaltbild eines Inhaltsserver, eines Client und
eines Proxy-Server, das ausführlicher
als 1 ist;
-
3A ist
ein Flussdiagramm, das ein Verfahren zum dynamischen Vorabrufen
von Daten aus einem Inhaltsserver über eine Hierarchie von Proxy-Servern
darstellt;
-
3B ist
ein veranschaulichendes Beispiel einer Statistiktabelle;
-
4 ist
ein Flussdiagramm, das die Funktionsweise des Inhaltsserver darstellt;
-
5 ist
ein Flussdiagramm, das die Statistikaktualisierung darstellt;
-
6 ist
ein Flussdiagramm, das die Erzeugung von Vorabrufhinweisdaten darstellt;
-
7 ist
ein Flussdiagramm, das die Client-Funktionsweise darstellt;
-
8 ist
ein Flussdiagramm, das einen Vorabrufvorgang darstellt;
-
9 ist
ein Flussdiagramm, das die Funktionsweise eines Bedienprogramms
für Client-Objektanforderungen
darstellt;
-
10 ist
ein Flussdiagramm, das die Funktionsweise des Proxy-Server darstellt;
-
11 ist
ein Flussdiagramm, das die Funktionsweise eines Bedienprogramms
für Proxy-Objektanforderungen
darstellt;
-
12 ist
ein Flussdiagramm, das die Funktionsweise eines Bedienprogramms
für Vorabrufbezugsnachrichten
darstellt;
-
13 ist
ein Flussdiagramm, das die Funktionsweise eines Proxy-Objektbedienprogramms darstellt;
-
14 ist
ein Flussdiagramm, das die Funktionsweise einer Routine zur Aktualisierung
von Vorabrufhinweisdaten darstellt.
-
1 zeigt
ein Datenverarbeitungssystem, zu dem Clients 22, eine Hierarchie
von Proxy-Servern 24, ein Netz 25 und Inhaltsserver 20 gehören.
-
Die
Clients können
Daten in Form von Eltern-Objekten, Kind-Objekten, angeforderten Objekten, Auswahlobjekten,
Seiten, angeforderten Daten und Auswahldaten anfordern. Eltern-Objekte
weisen eine Beziehung zu Kind-Objekten auf, so dass im Anschluss
an Eltern-Objekte möglicherweise
eines oder mehrere zugeordnete Kind-Objekten angefordert werden.
Angeforderte Objekte sind analog zu Eltern-Objekten, während Auswahlobjekte
analog zu Kind-Objekten sind. Angeforderte Objekte sind Objekte,
die tatsächlich
von einem oder mehreren Clients angefordert werden. Auswahlobjekte
hingegen sind Objekte, die mit den angeforderten Objekten gruppiert
werden oder eine Beziehung zu diesen aufweisen, so dass die Auswahlobjekte
zeitlich unmittelbar nach den angeforderten Objekten angefordert werden
können.
Angeforderte Daten beinhalten angeforderte Objekte, Eltern-Objekte
und andere Formen von Daten, die von den Clients angefordert werden.
Zu Auswahldaten gehören
Kind-Objekte, Auswahlobjekte und andere Formen von Daten, die vorabgerufen
werden können.
-
Der
Client 22 kann Daten aus dem Inhaltsserver 20 oder
den Proxy-Servern 24 anfordern. Die Proxy-Server 24 fungieren
normalerweise jedoch als Vermittlungsstellen (intermediaries) für die Clients 22 bezüglich des
Netzes 25 und der Inhaltsserver 20. Vorteilhafterweise
können
die Proxy-Server 24 die Datenanforderungen der Clients
erfüllen,
ohne die Inhaltsserver 20 zu kontaktieren, falls die Proxy-Serverhierarchie
die angeforderten Daten enthält
oder die Möglichkeit
hat, eine angeforderte Task auszuführen. Das Datenverarbeitungssystem
von 1 kann auf das Internet angewandt werden. Beispielsweise
kann der Inhaltsserver 20 eine Web-Site umfassen, während das
Netz 25 das Internet umfassen kann.
-
1 stellt
die logischen Verbindungen 26 (im Gegensatz zu den physischen
Verbindungen) zwischen Elementen des Datenverarbeitungssystems dar.
Die logischen Verbindungen 26 stellen den Datenfluss von
Objekten und Anforderungen im Datenverarbeitungssystem dar. Die
logischen Verbindungen 26 stellen normalerweise keine physischen Verbindungen
zwischen den Proxy-Servern 24 dar. Die logischen Verbindungen 26 können sich
aufgrund der Arbeitsbelastung und/oder aufgrund von physischen Ereignissen ändern, beispielsweise
aufgrund des Ausfalls eines Knotens oder einer Datenübertragungsverbindung.
Verschiedene Typen von Objekten können verschiedenen logischen Übertragungspfaden
folgen, um die Clients 22 zu erreichen.
-
Obwohl
in der Praxis praktisch eine beliebige Anzahl von Clients 22 und
Proxy-Servern 24 verwendet werden können, stellt 1 vier
Clients 22 und vier hierarchische Ebenen von Proxy-Servern 24 dar. In
der Praxis ist eine beliebige Anzahl von Ebenen in der Proxy-Serverhierarchie
gestattet, und die Clients 22 können mit einer beliebigen Ebene
der Proxy-Serverhierarchie
logisch verbunden werden. Beispielsweise könnte die Hierarchie von Proxy-Servern 24 ein
einziger Proxy-Server
sein. Die vorliegende Erfindung kann mit lediglich einem einzigen
Client 22 und einem einzigen Proxy-Server 24 ausgeführt werden.
-
Wie
gezeigt wird, wird der Proxy-Server der höchsten Ebene als ein Proxy-Server 30 der
Ebene null bezeichnet. "Ebene
null" ist eine willkürliche Bezeichnung,
die lediglich den Status des einen Proxy-Server in Bezug auf einen
anderen Proxy-Server im veranschaulichenden Beispiel von 1 definiert. Der
Proxy-Server der höchsten
Ebene kann mit dem Netz 25 logisch verbunden werden. Die
Proxy-Server 21 der höheren
Ebene sind logisch enger mit dem Netz 25 verbunden als
die Proxy-Server 23 der unteren Ebene. (Es wird daher verstanden,
dass bei dieser Terminologie, die den Proxy-Server der Ebene null
als die Spitze einer Proxy-Hierarchie betrachtet, die Ebene null "höher" als die Ebene eins ist, die ihrerseits "höher" als die Ebene zwei ist, und so weiter.)
-
Ein
erster Proxy-Server 35 der Ebene eins und ein zweiter Proxy-Server 37 der
Ebene eins sind mit dem Proxy-Server 30 der Ebene null
logisch verbunden. Der erste Proxy-Server 35 der Ebene
eins ist mit einem ersten Proxy-Server 40 der Ebene zwei und
mit einem zweiten Proxy-Server 43 der Ebene zwei verbunden.
Der erste Proxy-Server 40 der Ebene zwei ist mit einem
ersten Proxy-Server 50 der Ebene drei und mit einem zweiten
Proxy-Server 55 der Ebene drei logisch verbunden.
-
Zu
den Clients 22 gehören
ein erster Client 600, ein zweiter Client 603,
ein dritter Client 700 und ein vierter Client 703.
Der erste Client 600 und der zweite Client 603 sind
mit einem ersten Proxy-Server 50 der Ebene drei logisch
verbunden. Der dritte Client 700 und der vierte Client 703 sind
mit dem zweiten Proxy-Server 55 der Ebene drei logisch
verbunden.
-
Das
Datenverarbeitungssystem wird nun vom Standpunkt des zweiten Client 603 beschrieben. Der
zweite Client 603 ist mit dem Proxy seiner unmittelbar
nächsthöheren Ebene
verbunden. Wie dargestellt wird, ist der Proxy der nächsthöheren Ebene der erste
Proxy 50 der Ebene drei. Der zweite Client 603 ist
sodann mit dem ersten Proxy-Server 40 der Ebene zwei, dem
ersten Proxy-Server 35 der Ebene eins bzw. dem Proxy-Server 30 der
Ebene null verbunden. Der zweite Client 603 kann durch
das Netz 25 auf verschiedene Inhaltsserver 20 zugreifen.
Obwohl ein typischer Datenübertragungspfad
für den
zweiten Client 603 über
den Proxy der unmittelbar nächsthöheren Ebene
(d.h. den ersten Proxy-Server 50 der Ebene drei) läuft, kann
der zweite Client 603 oder ein Proxy der unteren Ebene
direkt mit anderen Proxy-Servern 24 oder mit dem Netz 25 Daten
austauschen. Der zweite Client 603 kann sogar seinen eigenen
Client-Proxy zur Cachespeicherverwaltung aufweisen.
-
Vom
Standpunkt des zweiten Client 603 sind bestimmte Proxy-Server nicht Teil
seiner Proxy-Hierarchie. Beispielsweise sind der zweite Proxy-Server 55 der
Ebene drei, der zweite Proxy-Server 43 der Ebene
zwei und der zweite Proxy-Server 37 der Ebene eins nicht
Teil der Proxy-Serverhierarchie des zweiten Client.
-
Die
Clients 22 können
Personal Computer, Arbeitsstationen, Set-Top-Boxen oder dergleichen beinhalten,
sind jedoch nicht auf diese begrenzt. Das Netz 25 kann – muss jedoch
nicht – das
Internet, das World Wide Web, ein Intranet, lokale Netze (LANs) oder
dergleichen beinhalten.
-
Der
Proxy-Server 24 und der Inhaltsserver 20 können verschiedene
handelsübliche
Computer umfassen. Beispielsweise kann der Proxy-Server 24 als
der von IBM Corporation vertriebene Internet Connection Server (ICS)
ausgeführt
werden. Ähnlich kann
der Inhaltsserver 20 als ein Lotus Go Web-Server, ein Lotus
Domino-Server oder dergleichen ausgeführt werden (ebenfalls von IBM
Corporation erhältlich).
Der Proxy-Server 24 oder der Inhaltsserver 20 kann
in jedem Datenverarbeitungsknoten ausgeführt werden, der Produkte wie
z.B. die Arbeitsstationen S/390 SYSPLEX, SP2 oder RS6000 (ebenfalls erhältlich von
IBM Corporation) enthält,
ist jedoch nicht auf diese begrenzt. Kurz gesagt, der Proxy-Server 24 oder
der Inhaltsserver 20 kann einen beliebigen Universalcomputer
und zugeordnete Software umfassen, die Zugriffe auf Seiten des World
Wide Web, Dateifernübertragungen,
elektronische Post und eine Transaktionsunterstützung für die Clients 22 bereitstellt.
-
Das
Datenübertragungssystem
von 1 kann die Attribute einer herkömmlichen
Proxy-Hierarchie verwenden, um die Leistungsfähigkeit der Datenübertragung
aufrechtzuerhalten. Falls beispielsweise ein angefordertes Objekt
in einem Proxy-Server
der unteren Ebene lokal nicht verfügbar ist, wird eine Anforderung
nach dem nichtverfügbaren
Objekt an den Proxy der nächsthöheren Ebene übertragen. Falls
der Proxy der höheren
Ebene zuvor das Objekt in seinem Cachespeicher zwischengespeichert
hat, leitet er das angeforderte Objekt über den Proxy-Server der unteren
Ebene an den Client. Andernfalls versucht der Proxy-Server der höheren Ebene,
das Objekt von seinem Proxy der nächsthöheren Ebene zu erhalten. Sobald
das angeforderte Objekt erhalten wurde, wird es an den Proxy der
unteren Ebene oder den das Objekt anfordernden Client geleitet.
-
2 stellt
ein ausführlicheres
Beispiel des in 1 gezeigten Datenverarbeitungssystems
dar. Das Datenverarbeitungssystem enthält den Proxy-Server 24,
den Inhaltsserver 20, das Netz 25 und den Client 22.
Das Datenverarbeitungssystem enthält vorzugsweise eine Vorabrufeinheit 250,
Statistiktabellen 261, eine Statistikaktualisierungseinheit 252, Hauptcachespeicher 297 und
Vorabrufcachespeicher 298.
-
Die
Vorabrufeinheit 250 enthält vorzugsweise ein erstes
Vorabrufbedienprogramm 248 im Proxy-Server 24 und
zweites Vorabrufbedienprogramm 241 im Client 22.
Die Statistiktabellen 261 enthalten eine dem Proxy-Server 24 zugeordnete
erste Statistiktabelle 293 und eine dem Inhaltsserver 20 zugeordnete
zweite Statistiktabelle 267. Die Statistikaktualisierungseinheit 252 enthält eine
erste Statistikaktualisierungseinheit 264 zum Aktualisieren
der ersten Statistiktabelle 293 und eine zweite Statistikaktualisierungseinheit 269 zum
Aktualisieren der zweiten Statistiktabelle 267. Die Hauptcachespeicher 297 enthalten
einen ersten Hauptcachespeicher 294 in jedem Proxy-Server 24 und
einen zweiten Hauptcachespeicher 246 in jedem Client 22.
Die Vorabrufcachespeicher 298 enthalten einen ersten Vorabrufcachespeicher 296 im
Proxy-Server 24 und einen zweiten Vorabrufcachespeicher 249 im
Client 22.
-
Ein
Proxy-Server 24 ist ein Datenverarbeitungsknoten, der Anforderungen
durch das Netz 25 bedient. Der Proxy-Server 24 enthält einen
ersten Prozessor 280, einen ersten Speicher 290 und
eine erste Speichereinheit 281. Der erste Speicher 290 kann
beispielsweise einen Arbeitsspeicher (RAM) umfassen. Die erste Speichereinheit 281 kann
beispielsweise eine Einheit mit Direktzugriffspeicher (DASD) umfassen.
Der erste Speicher 290 speichert eine Proxy-Serverlogik 295,
die als vom Computer ausführbarer
Code ausgeführt
ist. Die Proxy-Serverlogik 295 wird zur Ausführung durch
den ersten Prozessor 280 aus der ersten Speichereinheit 281 in
den ersten Speicher 290 geladen. Einzelheiten der Funktionsweise
der Proxy-Serverlogik 295 werden in 10 gezeigt.
-
Die
Proxy-Serverlogik 295 enthält ein Bedienprogramm 283 für Proxy-Objektanforderungen (proxy
object request handler), ein Proxy-Objektbedienprogramm 284,
das erste Vorabrufbedienprogramm 248, ein Bedienprogramm 285 für Vorabrufbezugsnachrichten,
ein Vorabrufaktualisierungsmittel 291, die erste Statistikaktualisierungsroutine 264, eine
erste Statistiktabelle 293, einen ersten Hauptcachespeicher 294 und
einen ersten Vorabrufcachespeicher 296.
-
Einzelheiten
der Funktionsweise des Bedienprogramms 283 für Proxy-Objektanforderungen werden
in 11 gezeigt. Einzelheiten der Funktionsweise des
Proxy-Objektbedienprogramms 284 werden
in 13 gezeigt. Die Funktionsweise des Bedienprogramms 285 für Vorabrufbezugsnachrichten
wird in 12 gezeigt. Einzelheiten der
Funktionsweise der Statistikaktualisierungseinheit 252 (d.h. der
ersten Statistikaktualisierungsroutine 264) werden in 5 gezeigt.
-
Die
Funktionsweise der Vorabrufeinheit 250 (d.h. des ersten
Vorabrufbedienprogramms 248) wird in 8 ausführlich gezeigt.
Die Funktionsweise der Vorabrufaktualisierungseinheit 291 oder
der Routine zur Aktualisierung von Vorabrufhinweisdaten wird in 14 gezeigt.
Die Proxy-Serverlogik 295 verwaltet den
ersten Hauptcachespeicher 294 und den ersten Vorabrufcachespeicher 296.
-
Der
Inhaltsserver 20 ist ein Datenverarbeitungsknoten, der
Anforderungen durch das Netz 25 bedienen kann. Der Inhaltsserver 20 enthält einen zweiten
Prozessor 260, einen zweiten Speicher 263 und
eine zweite Speichereinheit 265. Der zweite Speicher 263 kann
beispielsweise einen Arbeitsspeicher (RAM) umfassen. Die zweite
Speichereinheit 265 kann beispielsweise eine Einheit mit
Direktzugriffspeicher (DASD) umfassen. Der zweite Speicher 263 speichert
die Inhaltsserverlogik 268 oder Inhaltsserversoftware.
-
Die
Funktionsweise der Inhaltsserverlogik 268 wird im Folgenden
mit Bezugnahme auf 4 ausführlicher gezeigt. Die Inhaltsserverlogik 268 wird als
ein vom Computer ausführbarer
Code ausgeführt, der
zur Ausführung
durch den zweiten Prozessor 260 aus der zweiten Speichereinheit 265 in
den zweiten Speicher 263 geladen wird. Die Inhaltsserverlogik 268 enthält eine
zweite Statistiktabelle 267, eine zweite Statistikaktualisierungseinheit 269 zum
Aktualisieren der zweiten Statistiktabelle 267 und eine
Erzeugungseinheit 266 zum Erzeugen von Vorabrufhinweisdaten.
Die zweite Statistiktabelle 267 speichert Daten zu von
den Clients angeforderten Daten und mögliche Vorabrufdaten, die den
angeforderten Daten zugeordnet werden. Die Statistiktabelle 261 trägt zur Erzeugung
von Vorabrufhinweisdaten bei, die auf dem tatsächlichen Bezugsverhalten von
Clients beruht. Einzelheiten zu den Statistiktabellen 261 werden
in 3B dargestellt.
-
Die
Funktionsweise der zweiten Statistikaktualisierungseinheit 269 wird
mit Bezugnahme auf 5 ausführlicher gezeigt. Die Erzeugungseinheit 266 erzeugt
Vorabrufhinweisdaten aus den Daten in der zweiten Statistiktabelle 267 und
den angeforderten Daten. Die Erzeugungseinheit 266 kann
als eine Routine zur Erzeugung von Vorabrufhinweisdaten (prefetch
hint information – PHI)
ausgeführt
werden, wie in 6 dargestellt wird.
-
Der
Client 22 enthält
vorzugsweise einen dritten Prozessor 240, einen dritten
Speicher 245 und eine dritte Speichereinheit 242.
Der dritte Speicher 245 kann beispielsweise einen Arbeitsspeicher
umfassen. Die dritte Speichereinheit 242 kann beispielsweise
eine Einheit mit Direktzugriffspeicher (DASD) umfassen. Der dritte
Speicher 245 speichert die Clientlogik 244 oder
Clientsoftware. Die Funktionsweise der Clientlogik 244 wird
im Folgenden mit Bezugnahme auf 7 ausführlicher
gezeigt. Die Clientlogik 244 wird als ein vom Computer
ausführbarer
Code realisiert, der zur Ausführung
durch den dritten Prozessor 240 aus dem dritten Speichermittel 242 in
den dritten Speicher 245 geladen wird.
-
Die
Clientlogik 244 enthält
ein Bedienprogramm 247 für Client-Objektanforderungen, das zweite Vorabrufbedienprogramm 241,
einen zweiten Hauptcachespeicher 246 und einen zweiten
Vorabrufcachespeicher 249. Das Bedienprogramm 247 für Client-Objektanforderungen
erhält
angeforderte Objekte für
den Client aus dem zweiten Hauptcachespeicher 246, dem
zweiten Vorabrufcachespeicher 249, einem Proxy-Server 24 oder
einem Inhaltsserver 20. Einzelheiten der Funktionsweise
des Bedienprogramms 247 für Client-Objektanforderungen
werden in 9 gezeigt.
-
Die
Clientlogik 244 verwaltet den zweiten Hauptcachespeicher 246 und
den zweiten Vorabrufcachespeicher 249. Der zweite Hauptcachespeicher 246 wird
zum Speichern von Objekten verwendet, auf die häufig Bezug genommen wird, während der
zweite Vorabrufcachespeicher 249 zum Speichern von Objekten
verwendet wird, bevor tatsächlich
auf diese Bezug genommen wird. Vorabrufobjekte sind Objekte, auf
die in Verbindung mit Bezugsobjekten zuvor noch nicht Bezug genommen
wurde. In der bevorzugten Ausführungsform
werden die Hauptcachespeicher 297 vom herkömmlichen
LRU-Algorithmus (least recently used algorithm) verwaltet. Fachleute
werden außerdem
verstehen, dass jede andere Ersatzstrategie zur Verwaltung der Hauptcachespeicher 297 angewandt
werden kann.
-
Die
Hauptcachespeicher 297 und die Vorabrufcachespeicher 298 können logisch
getrennt werden. Der Grund für
die logische Trennung der Vorabrufobjekte von den Objekten im Hauptcachespeicher 297,
auf die tatsächlich
Bezug genommen wurde, besteht darin, zu verhindern, dass die Vorabrufobjekte zu
viel Speicherplatz einnehmen. Es stehen verschiedene Alternativen
zur Verfügung,
um dieses Ziel eines logisch getrennten Vorabrufcachespeichers und
Hauptcachespeichers zu erreichen. Beispielsweise kann ein einziger
Cachespeicher eine Obergrenze bezüglich der Anzahl von Vorabrufobjekten und/oder
eine Obergrenze bezüglich
des von den Vorabrufobjekten belegten Speicherplatzes aufweisen.
Der Hauptcachespeicher 297 und der Vorabrufcachespeicher 298 sind
zur Unterstützung
verschiedener Ziele vorgesehen. Der Hauptcachespeicher 297 dient
zum Zwischenspeichern beliebter Objekte, auf die möglicherweise
wiederholt Bezug genommen wird. Der Vorabrufcachespeicher 298 wird lediglich
zur Unterstützung
einer bestimmten Browser-Sitzung von Vorabrufobjekten verwendet,
auf die in dieser Sitzung höchstwahrscheinlich
als Nächstes Bezug
genommen wird. Falls ein Knoten der unteren Ebene in der Hierarchie
in der bevorzugten Ausführungsform
eine Vorabrufanforderung bezüglich
eines Objekts im Vorabrufcachespeicher eines Knotens der höheren Ebene
ausgibt, wird das Objekt zum Knoten der unteren Ebene geleitet und
als aus dem Vorabrufcachespeicher 298 des Knotens der höheren Ebene
löschbar
markiert, da das Ziel des Vorabrufs erfüllt wurde. Wenn tatsächlich auf
ein Vorabrufobjekt Bezug genommen wird, kann es in Abhängigkeit
von der Verwaltungsstrategie (management policy) des Hauptcachespeichers 297 in
diesen verschoben werden. In der bevorzugten Ausführungsform
wird ein Vorabrufobjekt, auf das einmal Bezug genommen wurde, unter
Verwendung einer LRU-Ersatzstrategie in den Hauptcachespeicher verschoben.
-
Es
ist ein alternatives Kriterium vorstellbar, um ein Objekt aus dem
Vorabrufcachespeicher 298 in den Hauptcachespeicher 297 zu
verschieben. In Abrams et. al., "Caching
Proxies: Limitations and Potentials", Proc. 4th International
World Wide Web Conference, 1996, wurden einige Ersatzstrategien
erläutert,
die beim Entscheidungsprozess die Objektgröße berücksichtigen. Fachleuten sind
noch andere Cachespeicherersatzstrategien bekannt.
-
3A ist
ein Flussdiagramm, das ein Verfahren zum dynamischen Vorabrufen
von Daten für Clients
aus einem Inhaltsserver 20 oder einer Proxy-Serverhierarchie
darstellt. Als Erstes fordert ein Client im Block 100 Daten
aus einem Proxy-Server oder einem Inhaltsserver 20 an.
Als Zweites werden im Block 102 frühere Datenzugriffsvorgänge oder
Datenbezugsmuster im Inhaltsserver 20 und in den Proxy-Servern
ermittelt. In der Praxis kann die Reihenfolge der Ausführung der
Blöcke 100 und 102 umgekehrt
sein.
-
Als
Drittes erzeugt der Inhaltsserver 20 im Block 104 Vorabrufhinweisdaten
(PHI) bezüglich
zusammenhängender
Zugriffsvorgänge
auf die angeforderten Daten auf der Grundlage der im Block 102 ermittelten
Datenbezugsmuster. Als viertes können die
Vorabrufhinweisdaten im Block 105 die angeforderten Daten
kommentieren. Beispielsweise können die
Vorabrufhinweisdaten als Metadaten huckepack auf den angeforderten
Daten (d.h. auf dem Objekt) übertragen
werden. Bezüglich
des Schritts des Einrichtens oder Erzeugens von Vorabrufhinweisdaten protokollieren
Inhaltsserver 20 Verwendungs-/Bezugsmuster von einer großen Anzahl
gleichzeitiger Benutzer oder Clients. In der Praxis stellen die
Inhaltsserver 20 fest, welche Gruppe von Objekten eine
Beziehung zu den angeforderten Daten oder dem angeforderten Objekt
aufweist. Die Inhaltsserver 20 erzeugen Vorabrufhinweisdaten
(PHI) und stellen diese mit dem angeforderten Objekt bereit. Im Vorabrufschritt
oder unmittelbar vor diesem können Proxy-Server
die PHI im Hinblick auf lokale Gegebenheiten interpretieren, um
zu entscheiden, welche Auswahlobjekte vorabgerufen werden müssen.
-
Als
Fünftes
werden die Vorabrufhinweisdaten im Block 106 aktualisiert,
wenn die angeforderten Daten durch die Proxy-Serverhierarchie geleitet werden. Die
Aktualisierung im Block 106 spiegelt ausgeführte Vorabrufvorgänge und
den Zwischenspeicherstatus auf den höheren Ebenen der Hierarchie
und andere lokale Gegebenheiten wider, beispielsweise lokale Bezugsmuster.
Die Proxy-Server können
den PHI ändern,
so dass sie ihre Vorabrufentscheidung und verschiedene lokale Gegebenheiten
widerspiegeln, bevor das Objekt an den Proxy der nächsten (unteren)
Ebene oder an die Clientstation geleitet wird. Wenn ein Objekt durch
die Proxy-Hierarchie geleitet wird, richtet der Sendeknoten anfängliche
PHI ein, während
der Empfangsknoten aus den anfänglichen
PHI endgültige
PHI ableiten kann. Die endgültigen
PHI definieren auf der Grundlage der angeforderten Objekte, welche
Auswahlobjekte vorabgerufen werden müssen. Der Vorabrufvorgang und
die Vorabrufentscheidung werden vom Empfänger, nicht vom Sender eingeleitet.
-
Schließlich werden
im Block 108 auf der Grundlage von Vorabrufhinweisdaten
und den angeforderten Daten Auswahldaten vorabgerufen. Der Proxy-Server
oder Client entscheidet, ob auf der Grundlage der PHI-Daten im empfangenen
Objekt, den lokal gespeicherten Bezugsdaten (falls verfügbar) und
anderen lokalen Gegebenheiten, beispielsweise der verfügbaren Speichergröße und der
Zugriffszeit, eine Teilmenge von Objekten vorabgerufen wird, die
in den PHI angegeben wird.
-
Bei
der Erzeugung von Vorabrufhinweisdaten im Block 104 werden
vorzugsweise das PICS-Protokoll oder ein PICS-kompatibles Format (siehe
unten) verwendet. Im Block 104 erzeugte PHI werden mit
jedem zwischengespeicherten Objekt als Teil seiner Metadaten gespeichert,
so dass im Falle der Anforderung eines zwischengespeicherten Objekts
die PHI-Daten des Objekts geprüft
werden können,
um die entsprechenden Vorabrufvorgänge einzuleiten. Die PHI-Daten
können
durch das PICS-Protokoll bereitgestellt werden. Das PICS-Protokoll
stellt Daten zu kritischen Bedingungen (criticalicity) jedes PHI-Objekts
und seiner Eigenschaften, beispielsweise der Größe und des Zwischenspeicherstatus,
in der höheren
Hierarchie bereit.
-
Das
Aktualisieren der Vorabrufhinweisdaten kann durch die Proxy-Serverhierarchie
ausgeführt werden.
Die Proxy-Server können
lokale Daten sammeln und die Vorabrufentscheidung in der Proxy-Hierarchie
abwärts
verteilen oder dezentralisieren. Außerdem haben die Daten darüber, welcher
zwischengeschaltete Proxy ein Objekt vorabgerufen hat, möglicherweise
Auswirkungen auf die Vorabrufentscheidung der Proxys der unteren
Ebene und der Clientstation, um die Speicher- und Bandbreitennutzung
zu optimieren.
-
Die
Proxy-Server in der Proxy-Serverhierarchie arbeiten zusammen, um
eine empfängerorientierte
Vorabrufentscheidung bereitzustellen. Die Vorabrufentscheidung kann
in Zusammenarbeit von jedem Proxy und Client getroffen werden. Vorabrufhinweisdaten
im Format von Metadaten kommentieren angeforderte Objekte (d.h.,
sie werden huckepack auf diesen übertragen).
Die Vorabrufhinweisdaten stellen Daten zu möglichen Vorabrufkandidaten
bereit. Zwischengeschaltete Proxy-Server können die Metadaten oder Vorabrufhinweisdaten
auf der Grundlage lokaler Bedingungen ändern und speichern die Metadaten
mit einem Objekt bei dessen Zwischenspeicherung, folglich kann der
Vorabrufvorgang bei späteren
Bezugnahmen auf das Objekt gestartet werden.
-
3B stellt
ein Datenformat der Statistiktabelle 261 dar. Die Statistiktabelle 261 muss
sich allgemein auf die erste Statistiktabelle 293 oder
die zweite Statistiktabelle 267 beziehen. Ein oder mehrere
Proxy-Server 24 verwalten die erste Statistiktabelle 293.
Der Inhaltsserver 20 kann die zweite Statistiktabelle 267 verwalten.
Die Formate für
die erste Statistiktabelle 293 und die zweite Statistiktabelle 267 sind
vorzugsweise im Wesentlichen ähnlich
oder identisch, um das Aktualisieren der Statistiktabelle 261 in
verschiedenen Proxy-Servern
in der Proxy-Serverhierarchie zu unterstützen. Die Statistiktabelle 261 unterstützt die
Bereitstellung von Vorabrufhinweisdaten (PHI) auf der Grundlage
des tatsächlichen
Betrachterbezugsverhaltens vom Standpunkt des Proxy-Server oder
des Inhaltsserver 20, dem die Statistiktabelle 261 zugeordnet
ist. Die Statistiktabelle 261 kann die Bezugnahmen aller
unterhalb von ihr befindlichen, Daten austauschenden Clients in
der Proxy-Serverhierarchie beobachten.
-
In 1 protokolliert
die erste Statistiktabelle 293 im ersten Proxy-Server 50 der
Ebene drei beispielsweise das gesamte Datenzugriffsverhalten des ersten
Client 600 und des zweiten Client 603. Unterdessen
protokolliert die erste Statistiktabelle 293 im zweiten
Proxy-Server 55 der Ebene drei das gesamte Datenzugriffsverhalten
des dritten Client 700 und des vierten Client 703.
Die erste Statistiktabelle im ersten Proxy-Server 40 der
Ebene zwei protokolliert das gesamte verhalten des ersten Client 600,
des zweiten Client 603, des dritten Client 700 und
des vierten Client 703. Obwohl der Proxy der unteren Ebene,
beispielsweise der erste Proxy-Server 50 der Ebene drei,
die Interessen des Client 600 möglicherweise besser protokollieren
kann, ist der Proxy der unteren Ebene möglicherweise nicht in der Lage,
genügend statistische
Bezugsdaten aus einer ausreichend großen Gruppe von Clients zu erhalten,
um Vorabrufhinweisdaten (PHI) von Bedeutung bereitzustellen.
-
In
der bevorzugten Ausführungsform
stellt der Inhaltsserver 20 im Falle eines aus diesem angeforderten
Objektes O die anfänglichen
Vorabrufhinweisdaten PHI auf der Grundlage der Daten in seiner zweiten
Statistiktabelle 267 bereit. Wenn das Objekt O in der Proxy-Hierarchie
abwärts
weitergeleitet wird, kann jeder Proxy-Server 24 entlang
des Pfades zum Client 22 die Vorabrufhinweisdaten (PHI)
im Objektvorsatz ändern,
um die PHI an die lokale Situation in der ersten Statistiktabelle 293 anzupassen,
falls genügend
lokale Bezugnahmen auf das Objekt O vorliegen. Die erste Statistiktabelle 293 kann
die zweite Statistiktabelle 267 auf der Grundlage von bestimmten
Faktoren, beispielsweise den indizierten Interessen oder Vorlieben
eines bestimmten Client, von einem Proxy-Server der unteren Ebene
ersetzen.
-
In
der bevorzugten Ausführungsform
verwaltet der Inhaltsserver 20 eine zweite Statistiktabelle 267,
die eine Datenbank von Datenzugriffshäufigkeiten der Clients 22 bezüglich der
angeforderten Daten ist. Die Datenbank könnte erweitert werden, so dass sie
Datenzugriffshäufigkeiten
von anfordernden Proxy-Servern 24 enthält. Ähnlich verwalten ein oder mehrere
Proxy-Server 24 eine erste Statistiktabelle 293.
Die Statistiktabelle 261 weist beispielsweise ein erstes
Feld (array) 383 mit einer ersten Datenstruktur 304 und
einer zweiten Datenstruktur 306 auf. Wie gezeigt wird,
sind die erste Datenstruktur 304 und die zweite Datenstruktur 306 Datensätze. Jeder
Datensatz in der Statistiktabelle 261 besteht aus mehreren Feldern,
die Eltern-Objektkennzeichner 301 (d.h. Objekt-ID), erste
Zählwerte 302 (d.h.
TCount) und Zugriffslisten-Datenzeiger 303 (d.h. A-List)
enthalten.
-
Das
Feld 301 für
Eltern-Objektkennzeichner enthält
den Objektkennzeichner. Der Eltern-Objektkennzeichner 301 enthält beispielsweise
den URL des Objekts für
Internetanwendungen oder zusammenhängende Anwendungen. Das erste
Zählfeld 302 enthält die Anzahl
von Malen, die gemäß der Serverbeobachtung auf
das dem Eltern-Objektkennzeichner zugeordnete Eltern-Objekt zugegriffen
wird. Das heißt,
das erste Zählfeld 302 enthält die Häufigkeiten
von tatsächlichen
Anforderungen nach angeforderten Objekten. Der erste Zählwert 302 stellt
eine Eltern-Objekt-Zugriffshäufigkeit
dar. Der Zugriffslisten-Datenzeiger 303 enthält einen
Datenzeiger auf eine Zugriffsliste 370.
-
Die
Statistiktabelle 261 weist eine Zugriffsliste 370 auf,
die beispielsweise einen ersten Zugriffsdatensatz 340,
einen zweiten Zugriffsdatensatz 350, einen dritten Zugriffsdatensatz
und einen vierten Zugriffsdatensatz 380 enthält. Wie
dargestellt wird, weist der der ersten Datenstruktur 304 zugeordnete Eltern-Objektkennzeichner
eine Zugriffsliste 370 auf, die aus einer verbundenen Liste
des ersten Zugriffsdatensatzes 340, des zweiten Zugriffsdatensatzes 350 und
des dritten Zugriffsdatensatzes 360 besteht. Das Datenzeigerfeld 313 des
nächsten
Datensatzes enthält
einen Zeiger auf den nächsten
Zugriffsdatensatz auf der Zugriffsliste 370, der einem
bestimmten Eltern-Objektkennzeichner 301 zugeordnet
ist. Die Zugriffsliste für
den der zweiten Datenstruktur 306 zugeordneten Eltern-Objektkennzeichner 301 enthält lediglich
den vierten Zugriffsdatensatz 380.
-
Jeder
Datensatz oder jede Datenstruktur auf der Zugriffsliste besteht
aus mehreren Feldern, die einen Kind-Objektkennzeichner 310 (d.h.
A-Object-ID), einen zweiten Zählwert 312 (d.h.
RCount) und einen nächsten
Datensatz-Datenzeiger 313 (d.h. Nxt)
beinhalten. Die Datenstrukturen können im Format einer allgemeinen
Datenstruktur, eines Datensatzes oder von Feldern vorliegen. Wie
in 4 dargestellt wird, sind die Datenstrukturen Datensätze, die
eine verbundene Liste in der Zugriffsliste 370 bilden.
-
In
einer alternativen Ausführungsform
kann das Datenformat der Statistiktabelle ein primäres Feld
enthalten, das mit einer Vielzahl von alternativen sekundären Feldern
in einer Baumstruktur in Zusammenhang steht. Das primäre Feld
würde Daten
enthalten, die eine Beziehung zu Eltern-Objekten aufweisen, und
das sekundäre
Feld würde
Daten zu den Kind-Objekten
von entsprechenden Eltern-Objekten enthalten.
-
Das
Kind-Objektkennzeichnerfeld 310 enthält den Objektkennzeichner (URL)
eines Objekts. Der Eltern-Objektkennzeichner 301 weist
eine Beziehung zu einem oder mehreren Kind-Objektkennzeichnern 310 auf
der Zugriffsliste auf. Die Kind-Objektkennzeichner 310 kennzeichnen
die möglichen Vorabrufkandidaten,
falls tatsächlich
auf das Eltern-Objekt des Kind-Objekts Bezug genommen wird. Der
zweite Zählwert 312 enthält die Anzahl
von Malen, die durch sein Eltern-Objekt auf das Kind-Objekt Bezug
genommen wird. Mit anderen Worten, der zweite Zählwert ist die Häufigkeit,
mit der zeitweilig und unmittelbar im Anschluss an die frühere Bezugnahme
auf ein zugeordnetes Eltern-Objekt auf das Kind-Objekt Bezug genommen wird. Der zweite
Zählwert 312 stellt
eine Kind-Objekt-Zugriffshäufigkeit dar.
-
Die
Kind-Objektkennzeichner 310 auf der Zugriffsliste 370 können auf
der Grundlage der Beobachtung des tatsächlichen Bezugsverhaltens der Clients
dynamisch erhalten werden. Beispielsweise kann eine Webseite in
HTML HTTP-Links zu anderen Webseiten haben. Diese durch die HTTP-Links
angezeigten Webseiten sind mögliche
Kind-Objekte von der die HTTP-Links enthaltenden (Eltern-)Webseite. Wenn
das Eltern-Objekt
betrachtet wird, falls ein im Eltern-Objekt enthaltener Bezugs-(HTTP-)Link
angeklickt wird, wird auf das entsprechende Kind-Objekt Bezug genommen.
Ein Kind-Objekt kann mehr als einen Elter haben, da ein Bezugs-Link
zum Kind-Objekt in mehreren anderen Eltern-Objekten enthalten sein
kann. Unter dem HTTP-Protokoll enthält die Anforderung nach dem
Kind-Objekt den
Eltern-URL als Bezugsdaten in ihrem Vorsatz. Folglich kann der Server
eine nachfolgende Kind-Bezugnahme dynamisch mit dessen Elter in
Zusammenhang bringen (durch die Bezugsdaten im Vorsatz des Kindes).
Falls ein Client ein Kind-Objekt
häufig
anklickt oder auswählt, kann
dieses zu einem Vorabrufkandidat oder zu Auswahldaten werden.
-
Außer dem
dynamischen Protokollieren des Betrachterbezugsverhaltens kann eine
statische Analyse oder Datenerhebung in Web-Protokollen periodisch
ausgeführt
werden, um Daten zu Gruppen von Objekten für die Statistiktabelle 261 abzuleiten. Der
Datenerhebungsalgorithmus (mining algorithm) kennzeichnet Gruppen
von Objekten, auf die gemeinsam Bezug genommen wird, um mögliche Vorabrufkandidaten
für PHI
zu erhalten. Ein Verfahren zum Abfragen von Web-Protokollen zur
Ableitung eines Bezugsmusters wird in "SpeedTracer: A Web Usage Mining and
Analysis Tool" von
Kun-lung Wu et. al., IBM Research Report 20895, Mai 1997, beschrieben
(siehe IBM Systems Journal Band 37, Nr. 1, Seiten 89 bis 105, 1998).
Der Algorithmus SpeedTracer stellt Daten zu häufigen Gruppen von Seiten, auf
die in einer Benutzersitzung gemeinsam Bezug genommen wird, und
zum häufigen Übertragungspfad
bereit. Der Algorithmus SpeedTracer ist eine in die Tiefe gehende
Datenerhebung, die zusammenhängende
Bezugnahmen aufdecken kann, auf die nicht gleich gemeinsam Bezug
genommen wird.
-
Außerdem kann
er auf der Grundlage des Übertragungspfades
zu einem gegebenen Objekt bessere Vorhersagen zu dem nächsten Satz
von Objekten machen, auf die Bezug genommen wird.
-
Zur
Kennzeichnung von Datenzugriffsmustern für die Statistiktabelle 261 können auch
andere Typen von Datenerhebungsalgorithmen verwendet werden. Beispielsweise
gehören
zu anderen Datenerhebungsalgorithmen die Klassifikation und die Gruppenbildung
(clustering), die ebenfalls auf die Web-Protokollanalyse angewandt
werden können, um
Bezugsmuster zu erhalten. Außerdem
können die
PHI auch vom Inhaltsanbieter auf der Grundlage seiner Kenntnis der
Objektbeziehungen bereitgestellt werden. Beispielsweise können PHI
Korrekturroutinen (patches) und Erweiterungen für angeforderte Software-Herunterladevorgänge, Java-Klassen
für das
angeforderte JAVA-Applet und Objekte (z.B. GIPs) enthalten, die
in den angeforderten Objekten enthalten sind, sind jedoch nicht
auf diese beschränkt.
-
In
der bevorzugten Ausführungsform
wird bei der Sammlung statistischer Daten eine tatsächliche Bezugnahme
auf ein Objekt durch eine Clientstation von einer Vorabrufanforderung
zu einem Objekt unterschieden. Der erste Zählwert 302 (d.h. TCount) und
der zweite Zählwert 310 (d.h.
RCount) in der Statistiktabelle 261 spiegeln tatsächliche
Bezugnahmen und keine Vorabrufvorgänge wider. Das heißt, ein Vorabrufvorgang
führt nicht
zu einer Aktualisierung der ersten Statistiktabelle 293 oder
der zweiten Statistiktabelle 267, sondern lediglich tatsächliche
Objektbezugnahmen.
-
Die
Vorabrufhinweisdaten oder die Liste von Vorabrufhinweisdaten können verschiedene
Datenstrukturen zum Kommentieren angeforderter Daten oder angeforderter
Objekte verwenden. Beispielsweise können Vorabrufhinweisdaten unter
Verwendung von huckepack übertragenen
Metadaten zwischen Anforderer- und Serverknoten übertragen werden. In einer
HTTP-Realisierung
kann der Datenaustausch unter Verwendung vorliegender Web-Protokolle
in Form von Metadaten in einen Objektvorsatz aufgenommen werden.
PICS ("Platform
for Internet Content Selection")
beschreibt ein Verfahren zur Übertragung
von Metadaten, die einen elektronischen Inhalt betreffen. PICS kann
auf (a) die Kommentierung der angeforderten Daten, (b) das Vorabrufen
von Auswahldaten und (c) die Bestätigung von Vorabrufvorgängen nach
dem Vorabrufen von Daten angewandt werden.
-
PICS
ist Fachleuten als eine Protokollempfehlung des Web-Konsortiums (Web
Consortium Protocol Recommendation) bekannt. PICS wurde zuerst zum Übertragen
von wertebasierten Bewertungsbezeichnungen (rating labels) verwendet,
beispielsweise "Wie
viel Nacktheit ist mit diesem Inhalt verbunden?", das Format und die Bedeutung der Metadaten sind
jedoch gänzlich
allgemein. In PICS werden Metadaten über den elektronischen Inhalt
gemäß dem "Bewertungsdienst" ("rating service") oder dem Erzeuger
und der vorgesehenen Nutzung (producer-and-intended-usage) der Daten
in Gruppen zusammengefasst, und in einer solchen Gruppe kann eine
beliebige Anzahl von Kategorien oder Mengen von Daten übertragen
werden. Jede Kategorie hat einen Bereich von zulässigen Werten, und für ein spezifisches
Inhaltselement kann eine bestimmte Kategorie einen einzigen Wert
oder mehrere Werte aufweisen. Außerdem kann die Metadatengruppe
(als "PICS-Kennsatz" ("PICS label") bekannt) Ablaufdaten
enthalten. Außerdem
gibt es Einrichtungen, die es zu ermöglichen, dass ein PICS-Kennsatz
auf mehr als einen spezifischen Teil eines elektronischen Inhalts
angewandt werden kann. Jeder PICS-Kennsatz für einen bestimmten Teil eines
elektronischen Inhalts kann unabhängig dem Inhalt hinzugefügt oder aus
diesem entfernt werden.
-
Beispielsweise
kann eine Bilddatei von einem Server mit einem PICS-Kennsatz übertragen werden,
dessen "Bewertungsdienst"-Feld anzeigt, dass sie wertebasierte
Bewertungsbezeichnungen gemäß dem Bewertungssystem "SafeSurf" enthält. Gemäß der bevorzugten
Ausführungsform
der Erfindung kann die Bilddatei bei ihrer Leitung durch einen Unternehmens-Proxy
einen neuen aktualisierten Kategoriewert für diesen PICS-Kennsatz erhalten,
um die lokale Betrachtung des "Bewertungsdienstes" widerzuspiegeln.
Folglich sieht der Clientcomputer lediglich den neuen Kategoriewert
des PICS-Kennsatzes. Das HTTP-Protokoll
wurde erweitert, so dass seine Anforderungsvorsätze und Antwortvorsätze PICS
unterstützen.
Die Techniker, die andere allgemeine Anwendungsprotokolle definieren,
beispielsweise NNTP, erwägen
nun ebenfalls, die PICS-Unterstützung hinzuzufügen. Als
Teil dieser Protokolle kann eine Liste der Typen von gewünschten PICS-Kennsätzen in
eine Anforderung aufgenommen werden. Außerdem gibt PICS ein Abfrageformat für die Anforderung
von PICS-Daten von einem zentralen Kennsatzserver an.
-
Es
folgt ein Beispiel für
einen PICS-Kennsatz: (PICS-1.1 "http:/the.rating.service" labels for "http://the.content" exp "1997.07.09T08:15-0500" r (n 4 s 3 v 2)),
wobei "n", "s" und "v" Übertragungsnamen
für verschiedene Metadatentypen
und die anwendbaren Werte für
diesen Inhalt 4 (für
n), 3 (für
s) und 2 (für
v) sind. Ausschließlich Software,
die die Kennung "http://the.rating.service" erkennt, würde wissen,
wie diese Kategorien und Werte interpretiert werden können.
-
In
einer bevorzugten Ausführungsform
werden drei verschiedene Arten von PICS-Kennsätzen eingeführt. Die erste, als Vorabrufkennsatz
(d.h. P-Kennsatz) bezeichnete Art von PICS-Kennsatz wird vom Serverknoten zum Bereitstellen
von PHI verwendet. Die zweite, als Anforderungskennsatz (d.h. R-Kennsatz) bezeichnete
Art von PICS-Kennsatz wird zum Anfordern der Vorabrufkandidatenobjekte
verwendet. Die dritte, als Bezugskennsatz (d.h. X-Kennsatz) bezeichnete
Art von PICS-Kennsatz
wird zum Bereitstellen einer Rückmeldung
zur Wirksamkeit des Vorabrufs auf der Grundlage der Vorabrufobjekte
verwendet, auf die tatsächlich
Bezug genommen wird.
-
Der
Vorabrufkennsatz kann eine beliebige Kombination der folgenden Kategorien
enthalten, unter anderem eine Kennzeichnerkategorie, eine Wahrscheinlichkeitskategorie,
eine Größenkategorie
und eine Zwischenspeicherkategorie, ist jedoch nicht auf diese begrenzt.
Die Kennzeichnerkategorie (d.h. die Kategorie ID) hat einen Wert,
der den URL des Vorabrufkandidaten überträgt. Die Wahrscheinlichkeitskategorie
(d.h. die Kategorie PROB) hat einen Wert, der eine Schätzung der
Nützlichkeit
des Vorabrufs überträgt. In der
bevorzugten Ausführungsform
wird eine Schätzung
der Bezugswahrscheinlichkeit verwendet. Die Bezugswahrscheinlichkeit
zeigt die Wahrscheinlichkeit an, mit der auf den Vorabrufkandidaten
Bezug genommen wird. Die Größenkategorie
hat einen Wert, der die Größe oder
den Speicherbedarf des Vorabrufkandidaten überträgt. Die Zwischenspeicherkategorie
hat einen Wert, der Daten zu jedem Proxy-Server der höheren Ebene überträgt, der
eine Kopie des Vorabrufkandidatenobjekts in seinem ersten Hauptcachespeicher 294 oder
in seinem ersten Vorabrufcachespeicher 296 aufweist. In
der bevorzugten Ausführungsform
wird nur der nächstgelegene
Proxy der höheren
Ebene gekennzeichnet.
-
Der
Anforderungskennsatz kann die folgenden Kategorien enthalten, unter
anderem die Kennzeichnerkategorie (d.h. die Kategorie ID), ist jedoch nicht
auf diese begrenzt. Der Wert der Kennzeichnerkategorie überträgt den URL
des Objekts, das vorabgerufen werden muss. Wenn ein (Proxy- oder
Client-)Knoten in der bevorzugten Ausführungsform ein vorgeschlagenes
Vorabrufkandidatenobjekt vorabrufen möchte, wird eine HTTP-Kopfanforderung unter Verwendung
des Anforderungskennsatzes zum Übertragen
des URL des vorabzurufenden Objekts durch die Proxy-Hierarchie an
den Inhaltsserver 20 rückübertragen.
Wenn ein Proxy-Server 24 eine Vorabrufanforderung von einem
Knoten einer unteren Ebene der Hierarchie empfängt, bedient er die Anforderung,
falls das Objekt sich in seinem Haupt- oder Vorabrufcachespeicher
befindet. Andernfalls leitet er die Vorabrufanforderung an den Proxy
der nächsthöheren Ebene
weiter.
-
Der
Bezugskennsatz kann die folgenden Kategorien enthalten, ist jedoch
nicht auf diese begrenzt: unter anderem die Objektkennzeichnerkategorie
(Kategorie Objekt-ID) und die Bezugskennzeichnerkategorie (Kategorie
Bezugs-ID). Die Objektkennzeichnerkategorie hat einen Wert, der
den URL des vorabgerufenen Objekts überträgt, auf das Bezug genommen
wird. Die Bezugskennzeichnerkategorie hat einen Wert, der den URL des
Objektes überträgt, das
in seinen PHI das vom Wert der Objektkennzeichnerkategorie angezeigte
Objekt enthält.
-
Wenn
in der bevorzugten Ausführungsform tatsächlich auf
ein Vorabrufobjekt Bezug genommen wird, wird eine HTTP-Kopfanforderung unter
Verwendung des Bezugskennsatzes durch die Proxy-Hierarchie an den
Inhaltsserver 20 rückübertragen,
um den URL des Vorabrufkandidatenobjekts, auf das Bezug genommen
wurde, und sein Bezugsobjekt zu übertragen.
Dieser Typ von HTTP-Kopfanforderung wird im Folgenden als Vorabrufbezugsnachricht
bezeichnet. Wenn ein Proxy-Server 24 eine Vorabrufbezugsnachricht
von einem Knoten der unteren Hierarchie empfängt, aktualisiert er seine
erste Statistiktabelle 293 und leitet die Anforderung an
den Proxy-Server der
nächsthöheren Ebene
weiter.
-
4 zeigt
ein Beispiel einer Serverlogik 268, die die zweite Statistiktabelle 267 im
Inhaltsserver 20 aktualisiert. Die Aktualisierung der zweiten Statistiktabelle 267 wird
durch eine Objektanforderung von einem Client 22 eingeleitet.
Der Inhaltsserver 20 erzeugt vorzugsweise Vorabrufhinweisdaten zum
Kommentieren oder Einfügen
in den Objektvorsatz des Objekts, bevor das angeforderte Objekt
an den Client 22 übertragen
wird.
-
Beginnend
beim Bezugsblock 405 wartet der Inhaltsserver 20 auf
eine Eingabe. Falls die empfangene Eingabe im Entscheidungssymbol 410 eine
Objektanforderung nach dem Objekt O ist, wird im Bezugsblock 415 die
Statistikaktualisierungseinheit 252 oder die zweite Statistikaktualisierungsroutine 269 aufgerufen.
Im Bezugsblock 420 wird die Erzeugungseinheit 266 zum
Erzeugen von Vorabrufhinweisdaten oder eine Vorabruferzeugungsroutine
aufgerufen. Ein ausführliches
Beispiel der Erzeugungseinheit 266 oder der PHI-Erzeugungsroutine
wird an späterer
Stelle mit Bezugnahme auf 6 beschrieben.
Im Bezugsblock 425 werden die PHI beispielsweise in den
Objektvorsatz des angeforderten Objekts eingefügt. Andernfalls können die
Vorabrufhinweisdaten das angeforderte Objekt oder die angeforderten
Daten im Block 425 kommentieren. In der bevorzugten Ausführungsform
kann das PICS-Protokoll zum Kommentieren des angeforderten Objekts
verwendet werden. Die PHI werden im P-Kennsatz gespeichert, wobei
der Wert der Kennzeichnerkategorie den URL des Vorabrufkandidaten
widerspiegelt. Im Block 430 wird das angeforderte Objekt
an den anfordernden Client oder den anfordernden Proxy-Server rückübertragen.
Falls die empfangene Eingabe im Entscheidungssymbol 435 eine
Vorabrufbezugsnachricht ist (d.h. eine HTTP-Kopfanforderung mit dem
X-Kennsatz, der anzeigt, dass tatsächlich auf ein Vorabrufobjekt
O Bezug genommen wird), wird im Schritt 440 das Statistikaktualisierungsmittel 252 oder
die zweite Statistikaktualisierungsroutine 269 aufgerufen.
Für andere
Typen von Eingaben, die nicht im Mittelpunkt der vorliegenden Erfindung
stehen, beispielsweise eine FTP-(File Transfer Protocol-)Anforderung,
kann ein entsprechendes anderes Bedienprogramm im Bezugsblock 445 aufgerufen werden.
-
5 zeigt,
wie die Statistikaktualisierungseinheit 252 eine der Statistiktabellen 261 aktualisiert. Die
Statistikaktualisierungseinheit 252 nimmt Bezug auf die
erste Statistikaktualisierungsroutine 264 zum Aktualisieren
der ersten Statistiktabelle 293 oder auf die zweite Statistikaktualisierungsroutine 269 zum Aktualisieren
der zweiten Statistiktabelle 267 oder sowohl auf die erste Statistikaktualisierungsroutine 264 als
auch auf die zweite Statistikaktualisierungsroutine 269.
Die Statistiktabelle 261 nimmt Bezug auf die erste Statistiktabelle 293 oder
die zweite Statistiktabelle 267 oder sowohl auf die erste
Statistiktabelle 293 als auch auf die zweite Statistiktabelle 267.
Die Statistikaktualisierungseinheit 252 sucht zunächst nach
Daten in einem Bezugsobjekt. Das angeforderte Objekt wird sodann
auf eine Zugriffsliste oder eine Vorabrufliste des Bezugsobjekts
platziert.
-
Beginnend
beim Bezugsblock 505 wird eine Statistiktabelle 261 aktualisiert,
so dass sie widerspiegelt, dass ein weiteres Mal auf das Objekt
O Bezug genommen wurde, indem der erste Zählwert erhöht wird. Mit anderen Worten,
im Block 505 wird TCount(O) um eins erhöht. Falls sich das Objekt O noch
nicht in der Statistiktabelle 261 befindet, wird ein Eltern-Objektkennzeichner
in die Statistiktabelle 261 eingefügt, wobei TCount(O) auf den
Anfangswert eins gesetzt wird. Der neue Eltern-Objektkennzeichner
ersetzt den Eintrag in der Statistiktabelle 261, auf den
zuletzt Bezug genommen wurde, falls kein freier Platz in dieser
verfügbar
ist. Im Entscheidungssymbol 510 wird das angeforderte Objekt
auf Bezugsdaten überprüft, indem
beispielsweise der Objektvorsatz des angeforderten Objekts geprüft wird.
Im HTTP-Protokoll wird das Bezugsobjekt beispielsweise im Vorsatz
bereitgestellt, um anzuzeigen, welches Objekt den HTTP-Link zum
angeforderten Objekt enthält.
Falls ein Bezugsobjekt (R) im Vorsatz gefunden wird, wird die Statistiktabelle 261 im Schritt 520 geprüft, um festzustellen,
ob das Objekt O sich bereits auf der Zugriffsliste des Objekts R
befindet. Ist dies der Fall, wird der zweite Zählwert (d.h. RCount(O)) im
Block 530 für
das angeforderte Objekt um eins erhöht. Andernfalls wird das angeforderte Objekt
(d.h. das Objekt O) im Block 525 in die Zugriffsliste des
Eltern-Objekts (d.h. des Objekts R) eingefügt, wobei der zweite Zählwert (d.h.
RCount(O)) auf den Anfangswert eins gesetzt wird.
-
6 zeigt
ein Beispiel der Erzeugungseinheit 266 zum Erzeugen von
Vorabrufhinweisdaten in eine Liste von Vorabrufhinweisdaten. Die
Liste von Vorabrufhinweisdaten enthält Kind-Objektkennzeichner
von Kind-Objekten, falls das Verhältnis des zweiten Zählwerts
zum ersten Zählwert
einen Hinweisschwellenwert überschreitet.
Die Liste von Vorabrufhinweisdaten stellt eine verbesserte oder
gefilterte Zugriffsliste dar. Das heißt, die Erzeugungseinheit 266 nimmt
Eingaben von der Statistiktabelle 261 entgegen und filtert
diese, um die Liste von Vorabrufhinweisdaten zu erhalten.
-
Die
Erzeugungseinheit 266 zum Erzeugen von Vorabrufhinweisdaten
stellt eine Routine 266 zur Erzeugung von Vorabrufhinweisdaten
(PHI) dar, die im Bezugsblock 610 beginnt. Im Bezugsblock 610 wird
die Zugriffsliste eines Eltern-Objekts (d.h. des Objekts O) überprüft, um festzustellen,
ob sie leer ist (d.h., ob A-List(O) gleich null ist). Falls die
Zugriffsliste nicht leer ist, sei im Bezugsblock 620 Cj
das nächste
Kind-Objekt (d.h. Kind-Objektkennzeichner),
das auf der Zugriffsliste des Eltern-Objekts (d.h. des Objekts O) gekennzeichnet
ist.
-
Im
Entscheidungssymbol 630 wird die Bezugswahrscheinlichkeit
des Kind-Objekts Cj mit einem Hinweisschwellenwert (d.h. TH) verglichen,
der ein zuvor angegebener Schwellenwert ist (z.B. 0,75). In der
bevorzugten Ausführungsform
wird die Bezugswahrscheinlichkeit von Cj als das Verhältnis des zweiten Zählwerts
zum ersten Zählwert
(d.h. RCount(Cj)/TCount(O)) definiert. Das Verhältnis ist eine Schätzung der
Wahrscheinlichkeit, mit der nach Bezugnahme auf das Eltern-Objekt (Objekt O)
auf das Kind-Objekt (Objekt Cj) Bezug genommen wird. Falls die Bezugswahrscheinlichkeit
von Cj im Entscheidungssymbol 630 größer als der Hinweisschwellenwert
(d.h. TH) ist, wird der Kind-Objektkennzeichner (Cj) im Bezugsblock 640 in
die PHI-Liste aufgenommen. Mit anderen Worten, falls das Verhältnis den
Hinweisschwellenwert überschreitet,
werden der Kind-Objektkennzeichner und zugeordnete Daten auf die
Liste von Vorabrufhinweisdaten platziert.
-
Die
Erzeugungseinheit 266 benötigt zur Ausführung des
Vergleichs im Bezugsblock 630 möglicherweise Software-Teilroutinen oder
Softwarekomponenten. Insbesondere kann die Erzeugungseinheit 266 zur
Erzeugung von Vorabrufhinweisdaten in eine Liste von Vorabrufhinweisdaten
ein Berechnungsmittel zum Berechnen der Bezugswahrscheinlichkeit und
ein Vergleichsmittel zum Vergleichen der Bezugswahrscheinlichkeit
mit dem Hinweisschwellenwert enthalten.
-
In
der bevorzugten Ausführungsform
werden die PHI-Daten unter Verwendung eines PICS-Protokolls im P-Kennsatz
gespeichert, wobei der URL des Kind-Objekts (Cj) als Kennzeichnerkategorie
(d.h. Kategoriewert ID) und seine Bezugswahrscheinlichkeit und Größe als Wahrscheinlichkeitskategorie- (d.h.
PROB) bzw. Größenkategoriewerte
verwendet werden. Falls die Zugriffsliste des Objekts O im Entscheidungssymbol 645 noch
nicht vollständig
abgefragt wurde, wird der Bezugsblock 620 erneut ausgeführt.
-
Zum
Auswählen
der Vorabrufkandidaten aus der Statistiktabelle 261 können verschiedene
alternative Kriterien verwendet werden. Beispielsweise kann ein
gleitender Mittelwert der Bezugswahrscheinlichkeit über vergangene
Zeitintervalle als Kriterium verwendet werden. Außerdem kann
die Auswahlprozedur der Vorabrufkandidaten rekursiv gemacht werden.
Falls ein Kind-Objekt (Objekt Cj) als Vorabrufkandidat eines Eltern-Objekts (Objekt O)
ausgewählt wird,
kann jedes Kind-Objekt (Objekt Cji) auf der Zugriffsliste des Kind-Objekts
(Objekt Cj) ausgewertet werden, um festzustellen, ob es auf die
Vorabrufliste des Eltern-Objekts (Objekt O) aufgenommen werden muss,
falls es noch nicht darin enthalten ist. Im Entscheidungssymbol 630 kann
die Vergleichseinheit oder Auswertungseinheit nun prüfen, ob
das Produkt von RCount(Cj)/TCount(O) und RCount(Cji)/TCount(Cj)
größer als
der Hinweisschwellenwert (TH) ist.
-
7 zeigt
ein Beispiel der Funktionsweise der Clientlogik 244. 7 zeigt,
dass das Bedienprogramm 247 für Client-Objektanforderungen aufgerufen wird,
sobald ein Objekt angefordert wird. Andernfalls kann das Vorabrufbedienprogramm 241 Objekte bearbeiten,
die nicht angefordert werden, jedoch im zweiten Vorabrufcachespeicher 249 des
Client 22 gespeichert werden müssen.
-
Beginnend
beim Block 710 wartet der Client 22 auf eine Eingabe.
Falls die empfangene Eingabe im Entscheidungssymbol 720 ein
Objekt ist, wird im Block 730 das zweite Vorabrufbedienprogramm 241 aufgerufen.
Im Block 740 wird das Client-Objektbedienprogramm aufgerufen,
um das Objekt an die anfordernde Anwendung im Client 22 rückzuübertragen. Falls
die empfangene Eingabe im Entscheidungssymbol 750 eine Objektanforderung
ist, wird im Bezugsblock 760 das Bedienprogramm 247 für Client-Objektanforderungen
aufgerufen. Für
andere Typen von Eingaben, die nicht im Mittelpunkt der vorliegenden
Erfindung stehen (beispielsweise eine Stapelspeicheranforderung
(push request)), kann im Block 770 ein entsprechendes anderes
Bedienprogramm aufgerufen werden.
-
8 zeigt
ein Beispiel der Funktionsweise der Vorabrufeinheit 250,
die das erste Vorabrufbedienprogramm 248 oder das zweite
Vorabrufbedienprogramm 241 oder sowohl das erste Vorabrufbedienprogramm 248 als
auch das zweite Vorabrufbedienprogramm 241 enthält. Kurz
gesagt, die Vorabrufeinheit 250 verwendet die von der Erzeugungseinheit 266 in 6 erzeugte
Vorabrufliste als Eingabe, um festzustellen, ob Kind-Objekte, auf
die in der Liste von Vorabrufhinweisdaten Bezug genommen wird, die
Speicherung in einem der Vorabrufcachespeicher 298 gewährleisten.
Die Vorabrufeinheit 250 berechnet für jedes Vorabrufkandidatenobjekt
oder jeden Kind-Objektkennzeichner auf der Liste von Vorabrufhinweisdaten
einen Vorabrufwert. Der Vorabrufwert geht von der Zugriffswahrscheinlichkeit
des Kind-Objekts
und vom Zugriffsaufwand der Speicherung des Kind-Objekts aus. Die Kind-Objekte mit den höchsten Schwellenwerten
werden zuerst zwischengespeichert, bis der verfügbare Speicherbereich in einem
der Vorabrufcachespeicher 298 voll ist.
-
Beginnend
beim Bezugsblock 805 sei L die PHI-Liste von Vorabrufkandidatenobjekten.
Die Vorabrufkandidatenobjekte können
in Form von Kind-Objektkennzeichnern auf der Liste von Vorabrufhinweisdaten
ausgedrückt
werden. Jeder im lokalen Cachespeicher (d.h. einem Vorabruf- oder
einem Hauptcachespeicher) erscheinende Vorabrufkandidat wird aus
L entfernt. Im Block 810 wird der Vorabrufwert (PV) jedes
Objekts in L berechnet. In der bevorzugten Ausführungsform wird der PV-Wert
als das Produkt aus Bezugswahrscheinlichkeit und Zugriffsaufwand
definiert. Der Zugriffsaufwand wird auf der Grundlage des nächstgelegenen
Standorts geschätzt,
der das Vorabrufkandidatenobjekt oder das auf der PHI-Liste gekennzeichnete
Kind-Objekt zwischenspeichert. In der Praxis werden die Kind-Objekte
anstatt als Ganzes vorzugsweise durch Kind-Objektkennzeichner auf
der PHI-Liste gekennzeichnet, um Speicherplatz zu sparen. Die Bezugswahrscheinlichkeit
stammt optimalerweise aus dem Wert der Wahrscheinlichkeitskategorie
(Kategorie PROB), und der nächstgelegene
Zwischenspeicherstandort stammt aus dem Wert der Zwischenspeicherkategorie
des PICS-Kennsatzes. Im Block 820 wird das Vorabrufkandidatenobjekt
mit dem höchsten
PV-Wert ausgewählt.
Im Bezugsblock 830 wird die Kapazität des Vorabrufpufferbereichs
ermittelt, die zum Aufnehmen des Vorabrufkandidatenobjekts (d.h.
Oj) verfügbar
ist. Dieser Speicherbereich wird gegenwärtig nicht genutzt oder von
Objekten mit niedrigeren PV-Werten belegt, die nur ein Bruchteil
(z.B. eine Hälfte)
des PV-Werts des aktuell ausgewerteten Vorabrufkandidatenobjekts
(d.h. Oj) sind. Jeder Speicherbereich, der von einem Objekt belegt
wird, das in einem der Vorabrufcachespeicher 298 als löschbar markiert
ist, wird als gegenwärtig
nicht verwendet betrachtet. Im Entscheidungssymbol 840 wird
einer der Vorabrufcachespeicher 298 überprüft, um festzustellen, ob genügend Speicherplatz
für Oj vorhanden
ist. Ist dies der Fall, wird das Objekt Oj im Bezugsblock 850 in
einen der Vorabrufcachespeicher 298 vorabgerufen. Im Block 860 wird
Oj aus der PHI-Liste (d.h. L) entfernt. Falls L nicht leer ist,
wird im Bezugsblock 870 der dem Bezugsblock 820 zugeordnete
Schritt erneut ausgeführt.
-
Obwohl
in der bevorzugten Ausführungsform jedes
Objekt einzeln vorabgerufen wird, können mehrere Objekte in einer
Anforderung zusammen vorabgerufen werden. Im Bezugsblock 850 kann
Oj auf eine Vorabrufliste gesetzt werden. Falls L leer ist, wird
im Block 870 sodann eine Vorabrufanforderung mit der gesamten
Vorabrufliste ausgegeben. Auch falls nicht genügend Speicherplatz im Vorabrufcachespeicher
vorhanden ist, kann außerdem
eine ausstehende Vorabrufliste verwaltet werden, so dass ein zusätzlicher
Vorabrufvorgang eingeleitet werden kann, wenn Speicherbereich verfügbar wird.
-
Unter
Verwendung des HTTP-Protokolls kann die Datenaustauschsitzung während des
Vorabrufvorgangs offen bleiben, um den Datenaustauschaufwand zu
verringern. Es besteht keine Notwendigkeit, die Sitzung für jeden
Vorabrufvorgang erneut einzurichten.
-
9 zeigt
ein Beispiel der Funktionsweise des Bedienprogramms 247 für Client-Objektanforderungen.
Kurz gesagt, das Bedienprogramm 247 für Client-Objektanforderungen
durchsucht zuerst den zweiten Hauptcachespeicher 246 und
als Zweites den zweiten Vorabrufcachespeicher 249. Falls
das Objekt sich weder im zweiten Hauptcachespeicher 246 noch
im zweiten Vorabrufcachespeicher 249 befindet, wird eine
Objektanforderung an den Server übertragen.
Falls das Objekt sich im zweiten Vorabrufcachespeicher 249 befindet,
wird eine Vorabrufbezugsnachricht an einen der Server übertragen,
um anzuzeigen, dass tatsächlich
auf das Vorabrufobjekt Bezug genommen wurde. Anschließend werden
das zweite Vorabrufbedienprogramm 241 und das Client-Objektbedienprogramm
verwendet.
-
Falls
das angeforderte Objekt O im Entscheidungssymbol 905 im
zweiten Hauptcachespeicher 246 gefunden wird, wird im Bezugsblock 925 das zweite
Vorabrufbedienprogramm 241 aufgerufen, um entsprechende
Vorabrufvorgänge
auf der Grundlage der dem Objekt O zugeordneten PHI einzuleiten.
Im Bezugsblock 930 wird das Client-Objektbedienprogramm
aufgerufen, um das angeforderte Objekt an die anfordernde Einheit
im Client rückzuübertragen. Falls
das angeforderte Objekt O im Entscheidungssymbol 910 im
zweiten Vorabrufcachespeicher 249 gefunden wird, wird im
Block 920 eine Vorabrufbezugsnachricht an den Inhaltsserver 20 übertragen,
so dass seine zweite Statistiktabelle 267 aktualisiert werden
kann, um die tatsächliche
Bezugnahme auf das Vorabrufobjekt zu erfassen. Wenn die Vorabrufbezugsnachricht
durch die Proxy-Hierarchie an den Inhaltsserver 20 weitergeleitet
wird, wird in der Tat die zweite Statistiktabelle 267 in
jedem zwischengeschalteten Proxy ebenfalls aktualisiert. Falls das
Objekt sich im Block 910 nicht im zweiten Vorabrufcachespeicher 249 befindet,
wird im Bezugsblock 915 eine Objektanforderung durch die
Proxy-Hierarchie an
den Inhaltsserver 20 übertragen.
-
Die
Vorabrufbezugsnachrichten können
stapelweise verarbeitet werden. Das heißt, es kann eine Vorabrufbezugsliste
verwaltet und periodisch eine zusammengesetzte Vorabrufbezugsnachricht
an den Server der höheren
Ebene übertragen
werden, um die Bezugnahme auf alle Objekte auf der Vorabrufbezugsliste
zu bestätigen.
-
10 zeigt
ein Beispiel der Funktionsweise einer Proxy-Serverlogik 295. Kurz gesagt,
die Eingabe wird gemäß der Tatsache
sortiert, ob es sich dabei um eine Objektanforderung, eine Objektübertragung oder
eine Vorabrufbezugsnachricht handelt. In Abhängigkeit von der Eingabe stehen
drei verschiedene Bedienprogramme oder Softwareroutinen zur Verfügung: ein
Bedienprogramm 283 für
Proxy-Objektanforderungen,
ein Proxy-Objektbedienprogramm 284 und ein Bedienprogramm 285 für Vorabrufbezugsnachrichten.
-
Beginnend
beim Bezugsblock 1005 wartet der Proxy-Server 24 auf
eine Eingabe. Falls die empfangene Eingabe im Entscheidungssymbol 1010 eine Objektanforderung
nach einem Objekt O ist, prüft
der Proxy-Server 24 im Block 1015, ob bereits
eine anstehende Anforderung nach diesem Objekt O vorliegt. Der Grund
für die
anstehende Anforderung kann darin bestehen, dass von diesem Proxy-Server 24 eine
Vorabrufanforderung nach diesem Objekt O ausgegeben oder eine frühere Anforderung
nach dem Objekt O von einem anderen, in der Proxy-Hierarchie weiter
unten befindlichen Proxy-Serverknoten übertragen
wurde. Falls im Bezugsblock 1015 keine anstehende Anforderung
nach dem Objekt O vorliegt, wird im Block 1020 das Bedienprogramm 283 für Proxy-Objektanforderungen
aufgerufen. Falls die empfangene Eingabe im Entscheidungssymbol 1025 ein
Objekt ist (vom Proxy der höheren
Ebene), wird im Bezugsblock 1030 das Proxy-Objektbedienprogramm 284 aufgerufen.
Falls die empfangene Eingabe im Block 1040 andererseits
eine Vorabrufbezugsnachricht ist, wird im Block 1045 das
Bedienprogramm 285 für
Vorabrufbezugsnachrichten aufgerufen. Für andere Typen von Eingaben,
die nicht im Mittelpunkt der vorliegenden Erfindung stehen (beispielsweise
eine FTP- Anforderung),
kann im Block 1060 ein entsprechendes anderes Bedienprogramm aufgerufen
werden.
-
11 zeigt
ein Beispiel der Funktionsweise des Bedienprogramms 283 für Proxy-Objektanforderungen.
Kurz gesagt, das Objekt wird im Falle des Vorhandenseins von Objekten
im Vorabrufcachespeicher an den anfordernden Client oder den anfordernden
Proxy-Server übertragen.
Falls das angeforderte Objekt eine Vorabrufanforderung war, wird
es anschließend
als aus dem ersten Vorabrufcachespeicher 296 des Proxy-Server 24 löschbar markiert. Falls
für das
angeforderte Objekt keine Vorabrufanforderung bereitgestellt wurde,
wird eine Vorabrufbezugsnachricht an den Inhaltsserver 20 übertragen. Die
Vorabrufbezugsnachricht wird jedoch nur übertragen, wenn das angeforderte
Objekt aus dem ersten Vorabrufcachespeicher 296 übertragen
wurde. Falls ein angefordertes Objekt sich weder im ersten Vorabrufcachespeicher 296 noch
im ersten Hauptcachespeicher 294 befindet, wird eine Objektanforderung
an einen anderen Proxy-Server 24 oder einen Inhaltsserver 20 übertragen.
Angeforderte Objekte, die im ersten Hauptcachespeicher 294 gefunden werden,
werden an den anfordernden Client oder Proxy-Server 24 übertragen, und die erste Statistiktabelle 293 wird
aktualisiert, falls die Anforderung keine Vorabrufanforderung war.
-
Falls
das angeforderte Objekt O beginnend beim Entscheidungsblock 1105 im
Vorabrufcachespeicher gefunden wird, wird es im Block 1130 an den
anfordernden Knoten rückübertragen.
Falls die Anforderung im Entscheidungssymbol 1135 eine
Vorabrufanforderung ist, wird das Objekt O im Block 1150 im
ersten Vorabrufcachespeicher 296 als löschbar markiert. Das Löschen von
Objekten aus dem ersten Vorabrufcachespeicher 296 schafft
Platz für künftige Vorabrufvorgänge, da
das Vorabrufobjekt O nun von einigen Knoten in der unteren Hierarchie
von Proxy-Servern 24 vorabgerufen wurde. Andernfalls wird
im Bezugsblock 1140 die Cachespeicher-Verwaltungseinrichtung
aufgerufen, um das Objekt O aus dem ersten Vorabrufcachespeicher 296 in
den ersten Hauptcachespeicher 294 zu verschieben, da tatsächlich auf
das Objekt O Bezug genommen wurde. Im Block 1160 wird eine
Vorabrufbezugsnachricht durch die Proxy-Serverhierarchie an den
Inhaltsserver 20 übertragen.
Im Block 1170 wird die Statistikaktualisierungsroutine
zum Aktualisieren der lokalen ersten Statistiktabelle 293 aufgerufen,
um die tatsächliche
Bezugnahme auf das Vorabrufobjekt O zu speichern. Falls das Objekt
O im Entscheidungssymbol 1110 nicht im ersten Hauptcachespeicher 294 gefunden
wird, wird im Bezugsblock 1125 eine Objektanforderung durch
die Proxy-Serverhierarchie an den Inhaltsserver 20 übertragen.
Falls die Objektanforderung im Entscheidungssymbol 1115 keine
Vorabrufanforderung ist, wird im Block 1120 die erste Statistikaktualisierungsroutine 264 aufgerufen,
um die lokale erste Statistiktabelle 293 zu aktualisieren, um
die tatsächliche
Bezugnahme auf das Objekt zu erfassen. Im Block 1180 wird
das Objekt O an den anfordernden Knoten rückübertragen.
-
12 zeigt
ein Beispiel der Funktionsweise des Bedienprogramms 285 für Vorabrufbezugsnachrichten.
Das Bedienprogramm 285 für Vorabrufbezugsnachrichten
prüft zunächst, ob
ein Objekt sich im ersten Vorabrufcachespeicher 296 befindet.
Falls das Objekt sich im ersten Vorabrufcachespeicher 296 befindet,
wird vor der Weiterleitung der Vorabrufbezugsnachricht die Cachespeicher- Verwaltungsroutine
aufgerufen. Falls das Objekt sich nicht im ersten Vorabrufcachespeicher 296 befindet,
wird die Vorabrufbezugsnachricht weitergeleitet.
-
Beginnend
beim Schritt 1205 wird die erste Statistikaktualisierungsroutine 264 aufgerufen,
um die lokale erste Statistiktabelle 293 zu aktualisieren, um
die tatsächliche
Bezugnahme auf das Vorabrufobjekt (O) zu erfassen. Falls das Objekt
O sich im Entscheidungssymbol 1210 im ersten Vorabrufcachespeicher 296 befindet,
wird im Bezugsblock 1215 die Cachespeicher-Verwaltungseinrichtung
aufgerufen, um das Objekt O aus dem ersten Vorabrufcachespeicher 296 in
den ersten Hauptcachespeicher 294 zu verschieben, da tatsächlich auf
das Objekt Bezug genommen wurde. Im Block 1220 wird die
Vorabrufbezugsnachricht an den Proxy der nächsthöheren Ebene weitergeleitet.
-
13 zeigt
ein Beispiel der Funktionsweise des Proxy-Objektbedienprogramms 284.
Als Erstes ruft das Proxy-Objektbedienprogramm 284 einheitlich
ohne Ausnahme die Vorabrufaktualisierungseinheit 291 oder
eine Routine zur Aktualisierung von Vorabrufhinweisdaten auf. Vorabrufobjektanforderungen
werden in Abhängigkeit
davon, ob das Vorabrufobjekt von einem Server oder unteren Ebene
angefordert wurde oder nicht, auf unterschiedliche Weise bearbeitet.
Falls das Vorabrufobjekt von einem Server der unteren Ebene angefordert
wurde, wird das Objekt an diesen rückübertragen; andernfalls wird
die Vorabrufcachespeicher-Verwaltungseinrichtung
aufgerufen. Falls kein Vorabrufobjekt angefordert wird, wird das
Objekt an den anfordernden Proxy-Server 24 oder
Client rückübertragen,
und die erste Statistikaktualisierungsroutine 264 wird
aufgerufen.
-
Beginnend
beim Bezugsblock 1305 wird die PHI-Aktualisierungsroutine oder das Vorabrufaktualisierungsmittel 291 aufgerufen,
um die PHI des Objekts O zu aktualisieren. Falls das empfangene
Objekt im Bezugsblock 1310 kein Vorabrufobjekt ist, wird
im Schritt 1315 das erste Vorabrufbedienprogramm 248 aufgerufen.
Im Bezugsblock 1320 wird das Objekt an den anfordernden
Knoten (in der unteren Hierarchie) rückübertragen. In der bevorzugten Ausführungsform
wird der Zwischenspeicherkategoriewert im P-Kennsatz unter Verwendung
des PICS-Protokolls aktualisiert, falls der entsprechende Vorabrufkandidat
(durch den Wert der Kennzeichnerkategorie angezeigt) von diesem
Proxy-Server 24 vorabgerufen wird. Im Block 1325 wird
die Cachespeicher-Verwaltungseinrichtung
aufgerufen, um das Objekt im Hauptcachespeicher zu speichern. Im
Bezugsblock 1355 wird die Statistikaktualisierungsroutine
aufgerufen. Falls das empfangene Vorabrufobjekt im Block 1330 von
einem Knoten der unteren Ebene in der Hierarchie angefordert wurde,
wird das Objekt im Bezugsblock 1350 an den Anforderer rückübertragen.
Andernfalls wird es vom aktuellen Knoten angefordert, und im Bezugsblock 1340 wird
die Vorabrufcachespeicher-Verwaltungseinrichtung
aufgerufen, um das Objekt im Vorabrufcachespeicher zu speichern,
indem eine notwendige Ersetzung vorgenommen wird, um Platz für das Objekt
zu schaffen.
-
14 zeigt
ein Beispiel der Funktionsweise des Vorabrufaktualisierungsmittels 291 oder
der PHI-Aktualisierungsroutine.
Die PHI-Aktualisierungsroutine vergleicht einen lokalen Zählwert von
angeforderten Objekten mit einem Schwellenzählwert. Falls die angeforderten
Objekte einen ersten Mindestschwellenwert überschreiten, werden sie einer zweiten
Mindestschwellenwertprüfung
unterzogen. Die Schwellenwerte können
auf der Grundlage experimenteller Ergebnisse gesetzt werden. Falls
der lokale Zählwert
kleiner als der erste Mindestschwellenwert ist, wird die ursprüngliche
Liste von Vorabrufhinweisdaten beibehalten. Falls der lokale Zählwert größer als
der erste Schwellenwert, jedoch nicht größer als der zweite Schwellenwert
ist, wird die Liste von Vorabrufhinweisdaten geändert.
-
Falls
der lokale Schwellenwert (d.h. TCount) des Objekts (O) in der lokalen
ersten Statistiktabelle 293 beginnend im Entscheidungssymbol 1405 nicht größer als
ein erster Mindestschwellenwert (d.h. CTM) ist, werden die ursprünglichen
PHI im Vorsatz des Objekts O beibehalten. Dies beruht einfach auf der
Tatsache, dass es in der unteren Hierarchie von Proxy-Servern 24 nicht
genügend
Bezugnahmen auf das Objekt gibt, um einen Aktualisierungsvorgang
zu gewährleisten.
Falls der lokale Zählwert
(d.h. TCount) des Objekts (O) in der lokalen Statistiktabelle 261 im
Entscheidungssymbol 1415 größer als ein zweiter Mindestschwellenwert
(d.h. TCH) ist, werden die ursprünglichen
PHI im Objektvorsatz ignoriert, und im Block 1420 wird
die PHI-Erzeugungsroutine aufgerufen, um die PHI auf der Grundlage
der lokalen ersten Statistiktabelle 293 zu erzeugen. Der
Grund hierfür
besteht darin, dass es in der unteren Hierarchie von Proxy-Servern 24 genügend Bezugnahmen auf
das Objekt gibt, um die PHI aufgrund des lokalen Verhaltens zu erzeugen.
Andernfalls wird im Bezugsblock 1425 die PHI-Änderungseinrichtung
(PHI modifier) aufgerufen, um den Wert der Wahrscheinlichkeitskategorie
zu ändern,
indem ein Durchschnittswert der lokalen Schätzung der Bezugswahrscheinlichkeit
und derjenigen im Vorsatz (von der Hierarchie der höheren Ebene
gesetzt) für
jedes Objekt in der PHI-Liste genommen wird.
-
Das
Vorabrufschema funktioniert selbst dann, wenn einige der Proxy-Server 24 die
erste Statistiktabelle 293 nicht verwalten und lokale Bezugsmuster
protokollieren. Die nichtprotokollierenden Proxy-Server übernehmen
einfach den Wert der Wahrscheinlichkeitskategorie (d.h. PROB) in
den vom Proxy-Server der höheren
Ebene oder vom Inhaltsserver 20 weitergeleiteten PHI.
-
Das
Vorabrufschema funktioniert auch in einer heterogenen Proxy-Serverumgebung,
in der einige der Proxy-Server herkömmliche Proxy-Server sind,
die das Vorabrufprotokoll nicht verstehen und an der Zusammenarbeit
nicht teilnehmen. Diese herkömmlichen
Proxy-Server interpretieren weder den Objektvorsatz, um die Vorabrufvorgänge einzuleiten, noch
verwalten sie die erste Statistiktabelle 293. Die herkömmlichen
Proxy-Server leiten lediglich die Metadaten (z.B. die PICS-Kennsätze im Vorsatz)
zusammen mit dem Objekt an den Proxy-Server der nächsten Ebene
weiter oder speichern die Metadaten zusammen mit dem Objekt, falls
sie entscheiden, das Objekt lokal zwischenzuspeichern.
-
Auch
ohne das Vorliegen der Proxy-Hierarchie kann die aktuelle Erfindung
auf jedes Netzwerk oder jede Client-Server-Umgebung angewandt werden.
Der Objektsendeknoten kann Bezugsmuster protokollieren, PHI ableiten
und sie in den Objektvorsatz aufnehmen. Außerdem kann der Objektempfangsknoten
die PHI zusammen mit dem Objekt in seinem Cachespeicher speichern.
Auf eine Bezugnahme auf das Objekt hin können Vorabrufvorgänge auf
der Grundlage der gespeicherten PHI und lokaler Faktoren, beispielsweise
der Cachespeichergröße und des
Zugriffsaufwands, gemäß der obigen
Erläuterung
eingeleitet werden.
-
Das
Speichern der PHI zusammen mit dem zwischengespeicherten Objekt
stellt eine zusätzliche Möglichkeit
für Vorabrufvorgänge bereit.
Ereignisse wie beispielsweise das Verfügbarwerden von weiterem Speicherbereich,
das Auftreten zusätzlicher
Bezugnahmen oder der Empfang von Vorabrufobjekten können zum
Einleiten eines zusätzlichen
Vorabrufvorgangs verwendet werden, indem die PHI der zwischengespeicherten
Objekte überprüft werden. Der
Vorabrufvorgang ist nicht auf den Augenblick begrenzt, in dem ein
Objekt vom Server angefordert wird, wie bei der vom Sender eingeleiteten
Vorgehensweise.
-
In
der bevorzugten Ausführungsform
wurde eine allgemeine Vorabrufmaßnahme für Web- und Proxy-Server beschrieben,
Fachleute werden jedoch verstehen, dass die vorliegende Erfindung
auf jede beliebige Situation angewandt werden kann, in der die vorabzurufenden
Objekte ähnliche
Eigenschaften aufweisen, und nicht unbedingt auf eine Internet- oder
WWW-Anwendung begrenzt
ist.
-
Obwohl
die bevorzugten Ausführungsform der
vorliegenden Erfindung für
gemeinschaftliche Vorabrufvorgänge
zwischen Eltern- und Kind-Proxys in der Hierarchie vorgesehen ist,
kann sie außerdem problemlos
so angepasst werden, dass sie eine Zusammenarbeit zwischen Geschwister-Proxys
beinhaltet. Falls beispielsweise kein Proxy in der oberen Hierarchie
das angeforderte Objekt oder den Vorabrufkandidaten zwischengespeichert
hat, kann ein Proxy auch Geschwister-Proxys abfragen.