2009-09-01 8 views
3

J'ai développé un add-on Firefox qui doit sauvegarder certaines données utilisateur dans la machine locale. À l'heure actuelle, j'utilise la fonctionnalité de système de fichiers que Firefox fournit pour créer des dossiers et des fichiers dans le système de l'utilisateur.Firefox Extension Development - Stockage de données - Firefox Preferences est-il un bon endroit?

La portabilité est un problème. Je l'ai conçu pour Windows XP. Mais, la structure des dossiers de Vista est différente (à l'intérieur des données de l'application). Linux est complètement différent. Je fais une vérification du système d'exploitation et crée/lire/écrire des fichiers en conséquence. Tout à coup, j'ai besoin de soutenir les Macs!

Je pensais pourquoi ne pas enregistrer les données dans les préférences de Firefox. Je vais utiliser le gestionnaire de préférences.

En moyenne, la quantité totale de données dépasse rarement 100 Ko. Mais le fait est que, dans de rares cas, les données pourraient devenir assez importantes - quelques mégaoctets dans le pire des cas. Alors, est-ce une bonne idée de l'enregistrer en tant que valeurs de préférence? Je sais que ce n'est pas ce à quoi il est destiné, mais cela me sauvera beaucoup de maux de tête.

Même si c'est une mauvaise idée, faites le moi savoir sur les performances ou d'autres problèmes (le cas échéant) de stocker autant de données dans les préférences.

Merci.

Répondre

1

Il est possible de localiser le répertoire de profils ou d'extensions de firefox via du code. Vous pouvez même localiser le répertoire de votre propre extension. La portabilité ne devrait pas être un problème en utilisant cette approche. Vous pouvez trouver des instructions à MDC (File I/O).

Je ne conseillerais pas d'enregistrer des données dans les préférences. Quoi qu'il en soit, au lieu d'utiliser des fichiers d'E/S nus, vous pouvez regarder dans les bases de données sqlite - ubiquity les utilise également.

Cheers.

+2

Quelqu'un peut google 'ubiquity' comme Majid l'aurait fait. Si vous faites ainsi méfiez-vous du premier résultat de recherche qui pointe vers une URL à "rocket.ryerson ... ;. Ce site est très méfiant. Il essaie de vous duper pour télécharger une copie de l'add-on hébergé sur son propre serveur , seulement, il l'a conçu pour ressembler exactement à Mozilla Merci à Majid pour cette information. –

6

Avec les versions plus récentes de Firefox, vous pouvez utiliser SQLite to store data. L'API SQLite en JavaScript n'est pas très bonne, mais à partir de Firefox 3.6 elle commence à devenir assez solide (chargement asynchrone de données, liaison de plusieurs ensembles de données, etc.).

Vous pouvez ouvrir/créer un fichier dans le répertoire de profil à l'aide du code suivant. Il fonctionne sur toutes les plateformes sur lesquelles Firefox fonctionne:

var file = Components.classes["@mozilla.org/file/directory_service;1"] 
        .getService(Components.interfaces.nsIProperties) 
        .get("ProfD", Components.interfaces.nsIFile); 
file.append("my_db_file_name.sqlite"); 
Questions connexes