Brevet FR2815212A1 — publié le 20020412

Chamement d'un fichier comportant une pluralité de pages La présente invention concerne un dispositif de chargement d'un fichier comportant une pluralité de pages. Le dispositif est agencé dans un poste de travail, un ordinateur personnel, une station de travail ou tout équipement équivalent couramment référencé comme"client". Le fichier réside dans un équipement serveur connecté au poste de travail par un réseau de transmission, le réseau Internet par exemple. Le terme serveur doit donc s'entendre dans son acception la plus large et il comprend notamment les sites Internet. Le fichier, du type texte, graphique ou image par exemple, ne peut généralement pas être visualisé dans son intégralité sur l'écran du poste de travail. De plus, sa consultation n'est pas toujours séquentielle, c'est à dire qu'en certains points plusieurs options sont possibles pour la suite de cette consultation. Il s'ensuit que le fichier est subdivisé en pages qui sont des entités indépendantes et qui peuvent généralement être intégralement visualisées sur l'écran. Lorsque l'utilisateur a terminé la consultation d'une page, la page courante, il émet une requête à destination du serveur dans laquelle figure la page suivante qu'il souhaite obtenir. Du fait d'un encombrement du réseau ou d'une saturation du serveur, le délai d'attente nécessaire à la transmission de la requête puis au chargement de la page suivante dans le poste de travail peut être relativement long. Plusieurs solutions ont donc été proposées pour charger dans une mémoire cache une ou plusieurs pages que l'utilisateur est supposé requérir après la page courante. Pour limiter le délai d'attente, le chargement a lieu pendant la consultation de cette page courante. Une première solution consiste à charger toutes les pages qui pourraient éventuellement être demandées par l'utilisateur. Ce n'est pas satisfaisant car cela conduit à un accroissement considérable du trafic pour le serveur. De plus, si le nombre de pages est conséquent, le temps nécessaire au chargement de ces pages peut être très long et même excéder le temps de consultation de la page courante augmenté du temps de chargement d'une page. Une deuxième solution mise en oeuvre dans le serveur consiste à définir le profil de l'utilisateur en mémorisant les diverses consultations qu'il a déjà effectuées. Un programme réalise alors une prédiction sur la page que va demander l'utilisateur en fonction de son comportement antérieur. Là encore, le serveur subit une charge supplémentaire puisqu'il doit gérer toutes les consultations du fichier. Une troisième solution exposée dans la demande de brevet FR 2 779 594 consiste à charger certaines pages prédéfinies suite au chargement de la page courante. L'indication des pages prédéfinies figure dans la page courante si bien qu'il faut modifier tout le fichier. La présente invention a ainsi pour objet un moyen de charger par anticipation une ou plusieurs pages que l'utilisateur est susceptible de requérir à la suite de la consultation de la page courante, ceci en limitant au maximum la surcharge du serveur. Selon l'invention, une méthode de chargement d'un fichier résidant dans un serveur, ce fichier comportant une pluralité de pages dont la dernière chargée est la page courante, comprend les étapes suivantes : - acquisition depuis le serveur d'une base de données qui répertorie les séquences types de pages du fichier, - sélection d'une séquence type au moins qui comprend la page courante, et - chargement de la page qui suit la courante dans l'une au moins des séquences types sélectionnées dès que la page courante a été chargée. Avantageusement, une séquence initiale de pages qui se termine par la page courante ayant déjà été chargée, la méthode comprend une étape pour calculer la longueur d'une suite de pages qui précède cette page courante dans les séquences types sélectionnées et qui est identique à une suite finale de pages de la séquence initiale, et elle comprend une étape pour charger la page qui suit la page courante dans l'une au moins des séquences types qui conduisent à la suite finale la plus longue. Selon une caractéristique additionnelle, la méthode comprend une étape pour charger la page qui apparaît le plus fréquemment à la suite de la page courante dans les séquences types présentant la suite finale la plus longue. De préférence, la méthode comprend une étape pour rejeter les séquences types dont la page qui suit la page courante appartient à la séquence initiale. Eventuellement, la méthode permet de charger plusieurs pages issues des séquences types sélectionnées. L'invention vise également un dispositif agencé dans un poste de travail comprenant des moyens pour mettre en oeuvre la méthode ci-dessus. La présente invention apparaîtra maintenant avec plus de détails dans le cadre de la description qui suit d'exemples de réalisation donnés à titre illustratif en se référant aux figures annexées qui représentent : - la figure 1, les éléments nécessaires au dispositif selon l'invention, et - la figure 2, un organigramme de la méthode selon l'invention. En premier lieu, il convient de définir la base de données des séquences types qui est réalisée au niveau du serveur, un site Internet le cas présent. Lorsqu'un utilisateur vient se connecter à ce site pour consulter le fichier, le serveur réalise un enregistrement de la séquence des pages demandées ou log de visite. On accumule ainsi dans un répertoire un nombre important de logs de visite qui sont créés à l'occasion de chaque connexion au site. Le nombre retenu peut aller de quelques milliers à quelques million. L'étape suivante consiste à réduire la taille du répertoire pour ne conserver que des séquences types de sorte que sa transmission au poste de travail soit assurée dans un délai raisonnable. On retiendra uniquement quelques centaines de logs. Pour opérer cette réduction, plusieurs possibilités sont offertes. A titre d'exemple, il est possible d'opérer une sélection au hasard ou bien de retenir un bloc de logs consécutifs. Il est également possible de partir d'une sélection initiale puis de la faire évoluer en testant l'effet de l'apport d'une nouvelle séquence sur la performance du dispositif décrit plus loin. En référence à la figure 1, le poste de travail comprend essentiellement un microprocesseur CPU, une mémoire vive RAM et une mémoire cache CA, chacun connecté à un premier contrôleur CONT. Ce premier contrôleur prévu pour la gestion du bus et de la mémoire est de plus connecté à une interface de périphériques PCI elle même raccordée à un deuxième contrôleur MASTER en charge de la gestion des périphériques au nombre desquels figure l'écran SCR. Le deuxième contrôleur MASTER est également relié à une interface interne INT sur laquelle est connectée une unité de stockage de masse telle qu'un disque (non représenté) et à une interface externe EXT connectée au réseau. L'accès au site Internet SERV se fait par l'intermédiaire d'un premier S1 et d'un deuxième S2 serveurs dits de proximité. Lors de la première consultation du site, l'utilisateur du poste de travail requière le chargement de la base de données des séquences types dans la mémoire de masse du poste de travail. Avantageusement, le chargement est réalisé globalement ou par parties durant une ou plusieurs périodes d'inactivité de la liaison de transmission entre le poste de travail PC et le serveur SERV. La base de données peut éventuellement être conservée après la consultation en vue d'utilisations ultérieures. Chaque séquence type Si est repérée par un indice i variant de 1 à t qui figure son rang dans le répertoire. La page qui figure à la jième position dans la séquence type Si est repérée Sjj, j variant de 1 à n. On se place maintenant au cours d'une consultation réalisée par l'utilisateur du poste de travail. Celui-ci a déjà requis une séquence initiale IS composée des pages Pk, k variant de 1 à v, Pv figurant donc la page en cours de visualisation ou page courante. Dès le chargement de la page courante détecté par le premier contrôleur CONT, celui-ci déclenche les opérations suivantes. En référence à la figure 2, la séquence initiale IS est comparée à chacune des séquences types Si. Si la page courante Pv appartient à la séquence type Si et si elle n'appartient pas à la séquence initiale IS, on compare alors les pages précédant la page courante dans la séquence initiale Pv-1 et dans la séquence type Sjj-1. En cas d'identité, on réitère la comparaison en prenant la page précédente dans la séquence initiale Pv-2 et dans la séquence type Si, j-2 et ainsi de suite jusqu'à obtenir deux pages différentes. On identifie ainsi une suite finale de pages de longueur Li commune à la séquence initiale IS et à la séquence type Si, cette suite se terminant par la page courante Pv. On recherche alors les séquences types qui présentent la suite finale de longueur maximale. Si une seule séquence type présente la suite la plus longue, le dispositif de l'invention émet une requête pour provoquer le chargement dans la mémoire cache CA de la page qui suit la page courante dans cette séquence type. Si par contre plusieurs séquences types comportent la suite finale de longueur maximale, on examine la page suite qui suit la page courante Pv dans chacune de ces séquences. On définit la fréquence d'apparition de chaque page suite distincte comme le nombre de séquences types dans lesquelles elle est présente. Le dispositif de l'invention déclenche alors le chargement de la page suite affectée de la plus grande fréquence d'apparition si cette page est unique. Dans le cas contraire, une page suite est choisie au hasard, la première du répertoire par exemple. La succession des opérations décrites ci-dessus peut être réalisée par exemple au moyen d'un programme informatique en langage C représenté en annexe. Il s'agit là du mode de réalisation privilégié mais l'invention s'applique également dans un mode dégradé. Ainsi, la recherche de la suite finale la plus longue n'est pas indispensable et il est possible de charger dans la mémoire cache CA la page qui suit la page courante dans la première séquence type qui comporte cette page courante. De même, il n'est pas impératif de calculer la fréquence d'apparition des différentes pages suite dans les séquences types comprenant une suite finale de longueur maximale. Il est en effet possible de retenir la page suite de la première séquence sélectionnée. Par ailleurs, lorsque différentes pages répondent aux critères de sélection exposés ci-dessus, le dispositif de l'invention permet de charger dans la mémoire cache plusieurs d'entre elles. Après la consultation de la page courante, l'utilisateur du poste de travail précise donc la page suivante qu'il souhaite consulter. Si cette page a été chargée dans la mémoire cache, elle est immédiatement visualisée. Si ce n'est pas le cas, une requête est transmise au serveur comme dans l'état de l'art mais l'invention ne conduit pas à une augmentation du délai d'attente. Les exemples de réalisation de l'invention présentés ci-dessus ont été choisis pour leur caractère concret. Il ne serait cependant pas possible de répertorier de manière exhaustive tous les modes de réalisation que recouvre cette invention. En particulier, tout moyen décrit peut-être remplacé par un moyen équivalent sans sortir du cadre de la présente invention. Annexe #define M 10/* length of the sequence */ #define NBP 1500/* # of html pages */ char tab) e [NBP] [255] ;/*) D and string of each page */ int database [1000] [M] ;/* max # of seq in Learning Base : 1000*/ int cache [NBP] ;/* content of the navigator cache */ int history [NBP] ;/*userbehaviororhistory*/ char URL [255] ;/* Page en cours de lecture par l'internaute */ int date=0, N1 ;/* # of seq. */ int cacheindx, predictindx ; int tsize ;/* # of pages */ /*******************************/ void Prediction (void) { char predict [255] ;/* La page predite par le systeme */ int q [NBP] ;/* stats per page */ int i, j, k, l, a, onmax ; int Ion, dejavu, maxq, maxindx ; /* get current URL asked by the user, determine its ID and increment the history sequence */ i=0 ; dejavu = 0 ; while ( {i =O ; a--) {if (database [k] [I+1] == cache [a]) {dejavu=1 ; break ;} } if (dejavu == 0) Ion = 1 ; for (a= (date-2) ; a > =O ; a--) {if ( (I+a-date+1) > =0) {if (database [k] [) +a-date+1] ==history [a]) Ion++ ; else break ; } } if (ton > ) onmax) ion marx = Ion ; for (a=0 ; a max~q) {max~q = q [k] ; maxjndx = k ;} } q [maxindx] = 0 ; predictindx = max~indx ; for (k=0 ; k REVENDICATIONS 1) Méthode de chargement d'un fichier résidant dans un serveur (SERV), ce fichier comportant une pluralité de pages dont la dernière chargée est la page courante (Pv), caractérisée en ce qu'elle comprend les étapes suivantes : - acquisition depuis ledit serveur d'une base de données qui répertorie les séquences types (Si) de pages dudit fichier, - sélection d'une séquence type (Si) au moins qui comprend ladite page courante (Pv) l et - chargement de la page qui suit ladite courante (Pv) dans l'une au moins desdites séquences types sélectionnées dès que ladite page courante a été chargée. 2) Méthode selon la revendication 1 caractérisée en ce que, une séquence initiale (IS) de pages qui se termine par ladite page courante (Pv) ayant déjà été chargée, elle comprend une étape pour calculer la longueur (Li) d'une suite de pages qui précède ladite page courante (Pv) dans lesdites séquences types (Si) sélectionnées et qui est identique à une suite finale de pages de ladite séquence initiale (ins), et elle comprend une étape pour charger la page qui suit ladite page courante (Pv) dans l'une au moins des séquences types qui conduisent à la suite finale la plus longue. 3) Méthode selon la revendication 2, caractérisée en ce qu'elle comprend une étape pour charger la page qui apparaît le plus fréquemment à la suite de ladite page courante (Pv) dans lesdites séquences types (Si) présentant la suite finale la plus longue. 4) Méthode selon l'une quelconque des revendications 1 à 3, caractérisée en ce qu'elle comprend une étape pour rejeter lesdites séquences types (Si) dont la page qui suit ladite page courante (Pv) appartient à ladite séquence initiale (ins). 5) Méthode selon l'une quelconque des revendications précédentes, caractérisée en ce qu'elle permet de charger plusieurs pages issues desdites séquences types (Si) sélectionnées. 6) Dispositif agencé dans un poste de travail (PC) comprenant des moyens pour mettre en oeuvre la méthode selon l'une quelconque des revendications précédentes.