Bonne nouvelle, je suis en train de corriger deux gros morceaux de code sur MDX. En effet, après avoir énormément travaillé sur le rendu et sur le fonctionnement général pour le rendre plus stable et plus précis, voici ce que j'essaye de faire :
Créer un vrai code d'interaction avec le serveur (requêtes HTTP pour appeler des ressources)
En effet, c'est une fonction indispensable sur chaque navigateur. Mon navigateur télécharge les ressources du site distant grâce au code
My.Computer.Network.DownloadFile qui est une fonction extrêmement rudimentaire pour obtenir une ressource sur Internet. Bien que la procédure fonctionne, et qu'elle était présente sur toutes les versions depuis le début, elle est totalement insuffisante pour un navigateur digne de ce nom. Un navigateur moderne envoie une série d'entêtes à chaque requête HTTP pour que le serveur sache à qui il a à faire. Certains serveurs refusent même l'absence d'entête. Je vais devoir faire appel à des fonctions comme WebClient ou même des Sockets pour palier à ce problème. Pour la prise en charge du SSL/TLS, je verrai comment on fait avec WebClient, je ferai du mieux que je peux.
Coder un meilleur système de cache
Le cache de MDX fonctionne bien mais repose sur un fonctionnement très sommaire.
Le dossier cache se situe dans:
C:\Users\<utilisateur>\AppData\Local\Temp\MDxCache.
Lorsque vous visitez un site, comme
http://www.google.fr/, mon navigateur mémorise l'URL visitée, créée un dossier unique, et y stocke les fichiers appelés par la page HTML. Le nom du dossier n'était rien de plus que l'URL visitée avec un nom échappé. C'était pas bête vu que chaque site a un chemin unique. Par exemple, si vous visitez Google, il créait le dossier
http___www.google.fr_ (/, \, : et ? sont remplacés par des _ car ces caractères sont interdits sous Windows) pour y insérer toutes les ressources temporaires liées à la page Web. Ceci économise de la bande passante, mais permet aussi de charger plus rapidement les pages demandées. Malheureusement, le cache est statique et ne prend pas en compte les mises à jour. Il va donc falloir vider le cache à chaque fois que vous voudrez obtenir la dernière version des pages Web.
À noter que dans les anciennes versions (avant la 0.9RC), / était remplacé par [, : était remplacé par un ], et ? par un ². Du coup, ça donnait des noms de dossiers comme
http][[www.google.fr[search²q=test pour stocker les fichiers temporaires. Le souci c'est que c'est moche, et en plus les caractères [, et ] sont interdits sous Windows 95. Du coup si vous arrivez à faire fonctionner MDX sous cet OS, j'ai remplacé les crochets ([, ]) par des underscores (_). Evidemment, cette méthode de cache est totalement désuette vu que je vais faire un nouveau système avec indexation.
En effet, lorsque vous visiterez une page Web, celle-ci sera ajoutée à une base de données (index.dat) avec un hash unique.
[Hash unique][URL du site visité][Retour chariot] |
Exemple de contenu du fichier index.dat :
1f3870be274f6c49b3e31a0c6728957fhttp://www.google.fr/
06a8a20c9d7842f60d91dc752fef5f15http://www.apple.com/
22014ac5a593fa37c92c37432ce9f869http://www.legifrance.gouv.fr/ |
Chaque hash sera une référence à un nom de dossier stocké sur le disque dur. Et devinez quoi? Chaque hash est long de 32 caractères! Du coup, plus de problèmes de noms de dossiers trop longs. Chaque dossier contiendra toutes les ressources Internet, et le nom sera bien évidemment unique (il y a 3.402823669209387e+38 possibilités de hashes différents). Pour les plus soucieux d'entre nous, il y aura en prime une vérification à chaque création de dossier, histoire de pas écraser des données préexistantes.
Vu qu'il y aura une meilleure interaction HTTP avec le serveur distant, on pourra même faire une comparaison des dates de création et de modification pour mettre à jour de manière dynamique les données du cache. Ce qui, avouons-le, est un pas supplémentaire pour mon navigateur Internet. Vraiment, que de nouveautés.