Accueil     Recherche | Plan     Technique | Liens | Actualités | Formation | Emploi | Forums | Base  
dossier cerig.efpg.inpg.fr 
 
Vous êtes ici : Accueil > La technique > Internet et le Web > Site Web : analyse du trafic et mesure de l'audience > La mesure de l'audience   Révision : 02 mars 2005
 
Page précédente
Page précédente
Site Web : analyse du trafic
et mesure de l'audience
Pas encore de page suivante
  Page suivante  
Florent BERLIAT et Jean-Claude SOHM (CERIG-EFPG)
(07 juin 2004)

XIII - La mesure de l'audience

XIII-1- Introduction

L'audience correspond au nombre de pages vues par les internautes, quel que soit leur format (HTML, PDF, PHP, ASP, etc.). Mesurer l'audience suppose que l'on surmonte les deux difficultés suivantes :

Par "internaute" il faut comprendre les personnes qui interrogent le Web directement via leur navigateur, et celles qui utilisent un aspirateur de site et examinent les pages correspondantes en temps différé.

Les robots sont des logiciels qui parcourent le Web en suivant des liens et/ou qui utilisent des listes de sites référencés. La plupart des robots téléchargent les pages à des fins d'indexation publique (moteurs de recherche) ou privée (site recherchant de l'information à façon pour leurs clients).

Il existe plusieurs méthodes pour séparer les requêtes des robots de celles des internautes :

Pour qui crée sa propre application, et n'a pas les moyens de tenir une liste à jour, la troisième méthode est la seule applicable. Elle n'est pas parfaite (aucune méthode ne l'est), les principales causes d'erreur étant :

Ayant choisi de séparer les robots des internautes sur le critère des images, nous avons vérifié que la table contenant les requêtes des robots comportait très peu d'erreurs.

Pour s'affranchir de l'erreur créée par les mémoires caches, il faut utiliser la méthode des marqueurs. Les entreprises spécialisées dans la mesure d'audience (laquelle fixe le niveau de redevance des bannières publicitaires) pratiquent une méthode complexe basée sur l'utilisation simultanée d'une image de comptage, d'un cookie et d'un script côté client. Au CERIG, nous nous contentons d'utiliser les images de comptages (une image distincte par page Web). Une image de comptage possède une durée de vie nulle, si bien qu'elle n'est pas mise en cache (sauf par les proxys mal configurés). Chaque fois que l'internaute consulte une page du site, l'image de comptage est requise, et cela s'inscrit dans le fichier journal. Nous procédons ensuite à un regroupement sur un niveau (pour les documents s'étalant sur plusieurs pages), ou sur deux niveaux (pour les documents à périodicité mensuelle couvrant plusieurs années). Nous avons exposé dans une note technique le fonctionnement détaillé des images de comptage.

Cette technique nous permet de mesurer l'erreur due aux mémoires caches : pour le site du CERIG, elle est comprise entre 20 et 30 % en moyenne. Mais cette moyenne cache de grosses disparités : l'erreur peut atteindre 50 % pour une page servant de pivot pour la navigation, telle que la page d'accueil du site, une page de premier niveau, ou le sommaire d'un document.

En résumé, nous utilisons :

La somme de ces deux chiffres fournit le trafic global du CERIG, trafic qui atteint actuellement (janvier 2005) les valeurs suivantes :

 

XIII-2- Premier exemple : fréquentation journalière du site

En utilisant dans Access le sous-menu "Opérations courantes de comptage" que nous avons présenté au chapitre précédent, nous saisissons l'année (ex : 2005), le mois (ex : février) et le jour (ex : 18). Puis, sur la ligne "Fréquentation", nous cliquons sur le bouton "sur une journée". Quelques secondes plus tard, le résultat suivant s'affiche :

Audience du site Web du CERIG (18 février 2005)

Nous allons maintenant examiner la manière dont ce résultat a été obtenu.

Première opération : vérification de la saisie. Lorsque nous déclanchons le comptage en cliquant sur un bouton, cet événement "On Click" déclenche une procédure en VBA dont le rôle consiste à vérifier que les trois champs précités ont bien été remplis, puis à lancer la suite des opérations. Le code de cette procédure est représenté ci-dessous.

Private Sub Commande46_Click()
On Error GoTo Err_Commande46_Click
    
    If DCount("*", "pbjours") <> 0 Then
    DoCmd.CancelEvent
    MsgBox "veuillez remplir le champ jour, mois et annee"
    SendKeys "{Esc}"
    Else:
    
    Dim stDocName As String
    stDocName = "frequentation_jours"
    DoCmd.RunMacro stDocName
    End If

Exit_Commande46_Click:
    Exit Sub

Err_Commande46_Click:
    MsgBox Err.Description
    Resume Exit_Commande46_Click
    
End Sub

L'opération de vérification utilise une requête de sélection (intitulée "pbjours"), dont le code est représenté sur la figure ci-dessous. Cette requête opère sur une table quelconque de la base, pourvue que ladite table soit de petite taille et ne soit pas vide (dans le cas présent, cette table s'appelle "freq_semaine" ; elle n'est jamais vide -- sauf au départ de l'application -- et elle ne comporte que sept lignes).

SELECT *
FROM freq_semaine
WHERE 	((([forms]![COURANTE]![jours]) Is Null))
	OR ((([forms]![COURANTE]![mois]) Is Null))
	OR ((([forms]![COURANTE]![annee]) Is Null));

Les critères de sélection portent sur le fait que les trois champs requis (année, mois, jour), dans le sous-menu représenté par le formulaire nommé "COURANTE", ont été saisis ou non. Le résultat de la requête est une feuille de données non vide si l'un au moins des trois champs n'est pas renseigné. La fonction DCount de la procédure, qui compte le nombre de lignes de cette feuille de données, donne alors un résultat non nul, et une boîte de message prévient l'opérateur. Dans le cas contraire, la feuille de données est vide, la fonction DCount renvoie un résultat nul, et la procédure enclenche la suite des opérations de comptage, grâce à la macro d'Access intitulée "frequentation_jours".

Deuxième opération : lancer et afficher les comptages. La structure de la macro ("frequentation_jours") qui pilote le comptage est représentée sur la figure ci-dessous.

Avertissements
ExécuterSQL
OuvrirRequête
OuvrirFormulaire
ArrêtMacro

Cette macro fonctionne de la manière suivante :

delete * from table_liaison
INSERT INTO table_liaison ( annee, mois, semaine, jours, trimestre, periode_debut, periode_fin )
SELECT 	forms!COURANTE!annee AS Expr1,
	forms!COURANTE!mois AS Expr2,
	forms!COURANTE!semaine AS Expr3,
	forms!COURANTE!jours AS Expr4,
	forms!COURANTE!trimestre AS Expr5,
	forms!COURANTE!debut_periode AS Expr6,
	forms!COURANTE!fin_periode AS Expr7;

Troisième opération : effectuer les comptages. La structure de la vue "frequentation_jours" est représentée ci-dessous. Cette vue rassemble (en effectuant un produit vectoriel) les données de trois vues calculant respectivement l'audience due aux internautes (via les pages HTML et PDF), celle due aux internautes (via les marqueurs) et la fréquentation des robots. De plus, elle calcule la fréquentation totale (marqueurs + robots).

Requête calculant l'audience quotidienne du site Web du CERIG

L'imbrication du formulaire d'Access et des vues de SQL Server est représentée sur la figure ci-dessous. Cette structure fait que l'ouverture du formulaire dans Access déclenche l'exécution des vues dans SQL Server.

Emboîtement du formulaire d'Access et des vues de SQL Server

A titre d'exemple, voici comment se présente la vue (intitulée "frequentation_jours2") qui calcule la fréquentation des internautes, basée sur l'utilisation des marqueurs (le terme "date" est mis entre crochets parce qu'il s'agit d'un mot réservé du langage SQL) :

Calcul de l'audience du site Web du CERIG (marqueurs)

En résumé. Le mécanisme qui fournit la fréquentation du site Web pour un jour donné est le suivant :

C'est l'affichage des résultats dans Access qui déclanche les calculs effectués dans SQL Server. On notera que la seule opération lourde -- le calcul des fréquentations, qui met en jeu des tables comportant plusieurs millions de lignes -- s'effectue dans SQL Server et non dans Access.

 

XII-3- Deuxième exemple : consultation mensuelle des documents

Grâce au sous-menu Access intitulé "Opérations courantes de comptage", déjà utilisé au paragraphe précédent, nous saisissons l'année (ex : 2005) et le mois (ex : février). Puis, sur la ligne "Consultation", nous cliquons sur le bouton "sur un mois". Quelques secondes plus tard, le résultat suivant s'affiche :

Site Web du CERIG. Consultation mensuelle des documents (janvier 2005)

Comme on peut le constater sur le bas de la figure, les pages du présent dossier ont été consultées 3301 fois au mois de janvier 2005, ce qui place ce document en en vingtième position. Ce chiffre (3301) représente la somme des fréquentations de toutes les pages constituant le dossier. C'est pour rappeler qu'il s'agit d'un regroupement de fréquentations au niveau du document que nous utilisons le terme "consultation".

Le fonctionnement des images de comptage. Pour permettre le regroupement de la fréquentation au niveau du document, les images de comptage relatives aux pages d'un même document ont une racine commune, comme le montre le tableau ci-dessous, relatif au présent dossier.

Nom de l'image de comptage Page du document
dossier_analyse-trafic-00.gif Sommaire
dossier_analyse-trafic-01.gif Page 01
dossier_analyse-trafic-02.gif Page 02
........................... ...............
dossier_analyse-trafic-13.gif Page 13 (ce chapitre)
........................... ...............
dossier_analyse-trafic-16.gif Annexe 01
........................... ...............

En tronquant les sept derniers caractères du nom de chaque image, on obtient une chaîne de caractères caractéristique du document. Dans la table des marqueurs, une requête de regroupement avec comptage sur les noms d'image tronqués permet de mesurer la consultation de chaque document. La même opération sur les noms d'image non tronqués fournit la fréquentation de chaque page individuellement.

On notera que, dans la table ci-dessus, chaque document apparaît avec un certain nombre d'attributs : son titre, le nom de la rubrique à laquelle il appartient, et son type dans la rubrique. Toutes ces informations sont stockées dans une table intitulée "reference", qui établit la correspondance entre ces attributs et le nom de l'image de comptage tronqué.

Première opération : vérification de la saisie. Le fonctionnement de cette opération est similaire à celui de l'exemple précédent. La procédure correspondante, et la structure de la requête "pbmois", sont représentées ci-dessous dans cet ordre.

Private Sub Commande40_Click()
On Error GoTo Err_Commande40_Click

    If DCount("*", "pbmois") <> 0 Then
    DoCmd.CancelEvent
    MsgBox "veuillez remplir le champ mois et annee"
    SendKeys "{Esc}"
    Else:

    Dim stDocName As String
    stDocName = "consultation_mois"
    DoCmd.RunMacro stDocName
    End If

Exit_Commande40_Click:
    Exit Sub

Err_Commande40_Click:
    MsgBox Err.Description
    Resume Exit_Commande40_Click

End Sub
SELECT *
FROM freq_semaine
WHERE 	((([forms]![COURANTE]![mois]) Is Null))
	OR ((([forms]![COURANTE]![annee]) Is Null));

Deuxième opération : lancer et afficher les comptages. La structure de la macro d'Access (intitulée "consultation_mois") qui pilote le comptage est représentée sur la figure ci-dessous.

Avertissements
ExécuterSQL
OuvrirRequête

ExécuterSQL
CopierObjet

OuvrirRequête

OuvrirFormulaire
ArrêtMacro

Comme précédemment, la commande "Avertissements" rend la macro silencieuse et la première commande "ExécuterSQL" vide la table "table_liaison". La première commande "OuvrirRequête" introduit dans cette table les coordonnées du mois (année, mois).

La seconde commande "ExécuterSQL" supprime la table "consultation", que la commande "CopierObjet" reconstitue vide à partir d'un modèle. Cette opération est nécessaire, pour faire repartir à un le compteur du champ dont le type de donnée est "Numauto". Ce champ est utilisé pour établir un classement des documents par ordre de fréquentation décroissante. Un simple nettoyage de la table ne remettrait pas à zéro le compteur de la numérotation automatique ; en effet, quand une ligne est supprimée, Access ne récupère pas le numéro correspondant.

La seconde commande "OuvrirRequête" lance une requête ajout intitulée "consultation_mois", qui fonctionne dans Access, et dont la structure est représentée ci-dessous.

Site Web du CERIG. Mise en forme de l'audience des documents

Cette requête récupère les données de consultation calculées par SQL Server et présentes dans la vue "dbo_consultation_mois", rajoute les attributs puisés dans la table de référence, classe le tout par ordre de consultation décroissante, et l'introduit dans la table "consultation" nouvellement créée. Le contenu de la colonne classement, de type Numauto, est rempli par le SGBD Access lui-même.

On note que la relation entre les deux tables sur lesquelles porte la requête, est pourvue d'une jointure externe. Cela tient au fait qu'une image de comptage -- qui vient d'être créée lorsqu'une nouvelle page Web est mise en ligne -- n'a pas encore été introduite dans la table "reference", mais donne déjà naissance à des enregistrements dans la vue "dbo_consultation_mois". Grâce à la jointure externe, une ligne presque vide apparaît dans la table "consultation", ce qui attire l'attention de l'opérateur, et l'incite à compléter la table "reference".

Pour terminer, la macro déclanche l'ouverture du formulaire qui affiche le contenu de la table "consultation".

Troisième opération : effectuer les comptages. SQL Server, qui reçoit d'Access l'information mois+année, doit la transformer en une liste de jours pour pouvoir l'exploiter. C'est le rôle de la vue intitulée "req_mois", dont la structure est représentée ci-dessous. On notera qu'avant de l'utiliser, SQL Server copie la table de liaison en provenance d'Access, et la renomme "table_liaison_1".

Analyse du trafic d'un site Web. Création de la liste des jours

Le calcul des consultations est effectué par la vue "consultation", dont la structure est représentée ci-dessous. (NB : le terme "opérations" dans la colonne éponyme signifie "regroupement". Qu'on se le dise !)

Audience mensuelle d'un site Web. Regroupement par document

Le déclanchement de l'exécution la requête "consultation_mois" dans Access entraîne celui de la vue "dbo_consultation_mois" dans SQL Server. La figure ci-dessous représente l'emboîtement correspondant.

Emboîtement d'une requête d'Access et de vues de SQL Server
 

XII-4- Conclusion

Les deux exemples qui sont exposés dans cette page montrent de manière pratique comment un peut gérer une grosse base de données dans un SGBD lourd tel que SQL Server, tout en pilotant l'interface utilisateur via un SGBD convivial tel qu'Access. L'expérience montre que les performances sont au rendez-vous, parce que nous avons pris soin d'effectuer les opérations lourde dans le SGBD le plus puissant.

Dans le premier exemple, le calcul d'une fréquentation quotidienne du site Web met en jeu trois grandes tables, dont la taille est actuellement (25 février 2005) :

et l'opération s'effectue en six secondes environ.

Dans le second exemple, le calcul des consultations de tous les documents du site Web met en jeu la table de marqueurs (5 millions d'enregistrements), et l'opération s'effectue en trois secondes environ.

     
Page précédente
Page précédente
Retour au sommaire
Retour au sommaire
Pas encore de page suivante
Page suivante
Accueil Technique Liens Actualités Formation Emploi Forums Base  
Copyright © CERIG/EFPG 1996-2005
   
 
Mise en page : J.C. Sohm