Доступ к элементам кеш-памяти - PullRequest
0 голосов
/ 11 марта 2012

Я пишу расширение Firefox, и мне нужно получить доступ к элементам в кеше памяти Firefox.

Вот код, с которым я работаю:

nsICache = Components.interfaces.nsICache
cacheservice = Components.classes["@mozilla.org/network/cache-service;1"].getService(Components.interfaces.nsICacheService);
cachesession = cacheservice.createSession("javascript", nsICache.STORE_IN_MEMORY, false);
cachesession.doomEntriesIfExpired=false;

//fileurl is captured from the nsIObserver and does print out correctly
cachedescriptor = cachesession.openCacheEntry( fileurl, nsICache.ACCESS_READ, false );
ERROR:NS_ERROR_CACHE_KEY_NOT_FOUND here

Так как этоданные, извлекаемые в фоновом режиме, я должен использовать nsIObserver, чтобы захватить запрос и поймать его URI для использования в качестве ключа кэша.

Как я показал выше, я получаю NS_ERROR_CACHE_KEY не найден, хотяпросмотр about:cache показывает, что он явно есть.Я также использовал прокси-сервер для принудительного кэширования на диск, но у меня возникла та же проблема (с кодом, измененным для просмотра дискового кэша).Я подумал, что это может быть из-за того, что элемент кэша все еще пишется, поэтому я сделал рекурсивный window.setTimeout для непрерывного вызова функций, но даже после завершения загрузки я получаю ту же ошибку.

Это, может быть, и проблема с nsICacheSession?Возможно я не правильно использую clientId.Если так, что clientId я должен использовать?

Я действительно в растерянности, поэтому я надеюсь, что вы, ребята, можете мне помочь.

1 Ответ

1 голос
/ 11 марта 2012

Проблема была в идентификаторе клиента. Я использовал «javascript», потому что видел это в примере. Оказывается, мне нужно было использовать «HTTP» вместо этого.

...