2009-09-01 1 views
3

로컬 컴퓨터에 일부 사용자 데이터를 저장해야하는 Firefox 추가 기능을 개발했습니다. 지금은 Firefox가 제공하는 파일 시스템 기능을 사용하여 사용자 시스템에 폴더와 파일을 만듭니다.Firefox 확장 개발 - 데이터 저장 - Firefox 환경 설정이 좋은 곳입니까?

휴대 성은 문제입니다. Windows XP 용으로 설계되었습니다. 그러나 Vista의 폴더 구조는 다릅니다 (앱 데이터 내부). Linux는 완전히 다릅니다. 나는 OS 검사를하고 그에 따라 파일을 작성/읽기/쓰기한다. 갑자기, 나는 맥을 지원해야한다!

Firefox 기본 설정에 데이터를 저장하지 않는 이유는 무엇입니까? Preference Manager를 사용하겠습니다.

평균적으로 데이터의 총량은 거의 100KB를 넘지 않습니다. 그러나 드문 경우이지만 최악의 경우에는 수 메가 바이트의 데이터가 상당히 커질 수 있습니다. 그래서 그것을 선호도 값으로 저장하는 것이 좋은 생각입니까?

그것이 의미하는 바가 아니라는 것을 알고 있지만 두통을 많이 줄 것입니다.

나쁜 아이디어 인 경우에도 많은 데이터를 환경 설정에 저장하는 성능이나 기타 문제 (있는 경우)에 대해 알려주십시오.

감사합니다.

답변

1

코드를 통해 firefox의 프로필 또는 확장 프로그램 디렉토리를 찾을 수 있습니다. 심지어 자신의 확장자의 디렉토리를 찾을 수도 있습니다. 이 방법을 사용하면 이식성이 문제가되지 않습니다.

MDC (File I/O)에서 지침을 찾을 수 있습니다.

환경 설정에 데이터를 저장하는 것이 좋습니다. 어쨌든, 벌거 벗은 파일을 사용하는 대신에 sqlite 데이터베이스를 살펴볼 수도 있습니다 - 편재성은 sqlite 데이터베이스를 사용합니다.

건배.

+2

전하는 바에 따르면 누군가가 Google에서 '편재성'을 보일 수 있습니다. 그렇게하면 "rocket.ryerson ..."에있는 URL을 가리키는 첫 번째 검색 결과에주의를 기울여야합니다.이 사이트는 매우 의심 스럽습니다. 자신의 서버에 호스팅 된 애드온 사본을 다운로드하도록 속여 려합니다 , 그는 모질라와 똑같이 보이도록 만들었습니다.이 정보에 대한 마지드에게 감사드립니다. –

6

최신 버전의 Firefox에서는 SQLite to store data을 사용할 수 있습니다. JavaScript의 SQLite API는별로 좋지 않지만 Firefox 3.6부터는 매우 견고합니다 (데이터의 비동기 가져 오기, 여러 데이터 세트 바인딩 등).

다음 코드를 사용하여 프로필 디렉토리에서 파일을 열고 만들 수 있습니다. Firefox가 실행되는 모든 플랫폼에서 작동합니다.

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");