Я пишу расширение 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
я должен использовать?
Я действительно в растерянности, поэтому я надеюсь, что вы, ребята, можете мне помочь.