Полезная информация

Пользователи не любят читать документацию. Станьте оригинальным, будьте не как все. Ознакомьтесь с нашей базой знаний.

№130-05-2005 02:20:02

kullibbin
Участник
 
Группа: Extensions
Зарегистрирован: 30-05-2005
Сообщений: 204

Решение проблемы с потерей кэша firefox

Как известно, фокс при некорректном выходе полностью теряет кэш. То есть, если закрыть его не по кнопке закрытия, а, например, просто прибить процесс firefox.exe, или из планировщика какого-нибудь, или при падении, или просто выйти из винды, через Пуск - Выключение, если фокс при этом был загружен - после перезагрузки кэша не будет. То же самое при исчезновении питания компа, при выключении компа через пульт от тюнера, при перегреве проца, при глюке железа, при просто глюке фокса от кривого расширения.....   
Дело в том, что при старте фокс устанавливает бит dirty на кэш, а при выходе его снимает. При нестандартном выходе этот бит не снимается, и при следующем старте фокс принудительно очищает весь кэш, во-избежание недоразумений. Кому-то это кажется нормальным, но в России, где почти все на модемах - это дикий баг.
Поэтому есть два выхода. Либо делать периодически бэкап кэша, а при старте фокса проверять этот бит, если он установлен - копировать кэш из бэкапа в папку кэша. Плохо, что приходится делать бэкап, если это делать при старте браузера - это дополнительные несколько секунд, а он и так не быстро стартует. Можно это делать при старте винды, но тогда информация, накопленная за день, исчезнет, хоть это и лучше, чем если вообще весь кэш слетит.
А есть и еще один вариант. Я проверил, размер папки кэша при работе фокса и после его выхода, если ничего не загружать после замера, идентичен, значит - при выходе никаких процессов в файлах кэша не происходит, переиндексации тоже. Вручную этот бит обнулял - все, что в кэше было - все осталось на месте. Возможно будет появление лишних файлов, если фокс упал во время загрузки странички, но это оч маловероятно, да и несколько килобайт - небольшая плата за кэш, нажитый неделями :) По-любому, надо тестировать.

Теперь главное.
После запуска фокса надо в файле %ProfilePath%\Cache\_CACHE_MAP_ обнулить байт по адресу 000F. Это и есть тот самый флаг. Файл на запись доступен при работающем фоксе. То есть, что бы не случилось, при выходе фокса этот бит будет нулевым, и при последующем запуске фокс ничего не станет удалять из кэша! Вручную все проверено, работает на-ура.
Осталось написать расширение, которое это будет делать, и проблема будет навсегда решена, независимо от версии браузера. Ребята, сделайте же это благородное дело, иначе народ с "кэшастой" Оперы никогда не слезет - альтернативы-то нет, как выяснилось!

http://forum.mozilla.ru/viewtopic.php?pid=24170#p24170 - тут djet описал первый способ, с бэкапом кэша.

Отредактировано kullibbin (30-05-2005 02:22:36)


Из практики:
- А скажите, Linux - это хороший Windows ?

Отсутствует

 

№230-05-2005 05:44:13

arvin
Участник
 
Группа: Members
Откуда: Волгоград
Зарегистрирован: 20-10-2004
Сообщений: 201

Re: Решение проблемы с потерей кэша firefox

ура работает, вот тока при работающем фоксе править не получается
как бы теперь это автоматизировать? кто справится?

Отредактировано arvin (30-05-2005 05:51:08)


Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1 - Build ID: 2006120418
Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU; rv:1.8.1.2pre) Gecko/20070116 Thunderbird/2.0b2 - Build ID: 2007011615

Отсутствует

 

№330-05-2005 07:34:01

kullibbin
Участник
 
Группа: Extensions
Зарегистрирован: 30-05-2005
Сообщений: 204

Re: Решение проблемы с потерей кэша firefox

Готов патч, лечащий этот баг. Тестируйте, хочется узнать результаты.
http://panradio.narod.ru/patch.zip

Отредактировано kullibbin (30-05-2005 07:35:39)


Из практики:
- А скажите, Linux - это хороший Windows ?

Отсутствует

 

№430-05-2005 07:37:29

kullibbin
Участник
 
Группа: Extensions
Зарегистрирован: 30-05-2005
Сообщений: 204

Re: Решение проблемы с потерей кэша firefox

arvin

вот тока при работающем фоксе править не получается

Все получается, иначе как бы я проверил? Я ж все описал. Патч - это хорошо, но все же это изменение кода... возможны последствия... поэтому тестируйте :)


Из практики:
- А скажите, Linux - это хороший Windows ?

Отсутствует

 

№530-05-2005 08:53:32

alc
Участник
 
Группа: Extensions
Откуда: Чебоксары
Зарегистрирован: 02-03-2005
Сообщений: 296

Re: Решение проблемы с потерей кэша firefox

Файл на запись доступен при работающем фоксе.

Попробую расширение написать.


Бди!

Отсутствует

 

№630-05-2005 09:00:06

alc
Участник
 
Группа: Extensions
Откуда: Чебоксары
Зарегистрирован: 02-03-2005
Сообщений: 296

Re: Решение проблемы с потерей кэша firefox

Хм, сейчас посмотрел, доступ закрыт на запись во время работы FF.


Бди!

Отсутствует

 

№730-05-2005 09:13:46

kullibbin
Участник
 
Группа: Extensions
Зарегистрирован: 30-05-2005
Сообщений: 204

Re: Решение проблемы с потерей кэша firefox

А как же я правил? Кстати - редактором FC v0.66, он какой-то неправильный, мож в нем дело? Вот прям сейчас открыл этот файл, бит стоял в 1 - я тестировал :), переправил в 0, сохранил, переоткрыл - для гарантии - там 0... так что файл открыт на запись! По крайней мере - у меня.


Из практики:
- А скажите, Linux - это хороший Windows ?

Отсутствует

 

№830-05-2005 09:25:44

Gribovms
Участник
 
Группа: Members
Зарегистрирован: 31-03-2005
Сообщений: 5

Re: Решение проблемы с потерей кэша firefox

Патч работает! Пока ничего не упало :D

Отсутствует

 

№930-05-2005 09:27:43

alc
Участник
 
Группа: Extensions
Откуда: Чебоксары
Зарегистрирован: 02-03-2005
Сообщений: 296

Re: Решение проблемы с потерей кэша firefox

Странно, возможно дело в редакторе. Редкатор в FAR manager не открывает на редактирование. Word тоже (просто проверил). Ладно вечером, если будет время, попробую через расширение функциями XPCOM открыть, тогда точно будет видно.


Бди!

Отсутствует

 

№1030-05-2005 10:44:26

kullibbin
Участник
 
Группа: Extensions
Зарегистрирован: 30-05-2005
Сообщений: 204

Re: Решение проблемы с потерей кэша firefox

Патч работает! Пока ничего не упало

Смотреть надо так: выставить кэш этак 1 мег, походить, уронить фокса из диспетчера задач. Потом опять запустить, походить, снова прибить.. и так несколько дней. Чтоб кэш самоочищался. Прибивать фокса во время загрузки странички, в самые ответственные моменты. А через несколько дней посмотреть, сколько там в кэше будет занимать папка, и сколько он говорит у него занято по about:cache. Ну и посматривать, все ли кэшируется, это видно по тому, подгружается ли графика, или из кэша моментально берется. Но - имхо - чтоб заметно добавить грязи в папку кэша, которая непроиндексируется - это надо потрудиться.


Из практики:
- А скажите, Linux - это хороший Windows ?

Отсутствует

 

№1130-05-2005 10:50:03

Почесал
Участник
 
Группа: Members
Зарегистрирован: 24-02-2005
Сообщений: 3957

Re: Решение проблемы с потерей кэша firefox

Блин, патч -- это не самое лучшее решение, лучше это в расширении реализовать. =( Изменение кода может отразиться, если не сейчас, то потом...

Отсутствует

 

№1230-05-2005 11:28:55

alc
Участник
 
Группа: Extensions
Откуда: Чебоксары
Зарегистрирован: 02-03-2005
Сообщений: 296

Re: Решение проблемы с потерей кэша firefox

А какая разница, если получится, то расширение будет делать то же самое, что и патч. Просто решение с расширением изящнее. Хотя не факт, что получится..


Бди!

Отсутствует

 

№1330-05-2005 11:31:59

Почесал
Участник
 
Группа: Members
Зарегистрирован: 24-02-2005
Сообщений: 3957

Re: Решение проблемы с потерей кэша firefox

А какая разница, если получится, то расширение будет делать то же самое, что и патч. Просто решение с расширением изящнее. Хотя не факт, что получится..

Так патч он изменяет код программы, а расширение подключается при загрузке браузера... Его можно удалить, выключить и так далее.

Отсутствует

 

№1430-05-2005 11:57:23

alc
Участник
 
Группа: Extensions
Откуда: Чебоксары
Зарегистрирован: 02-03-2005
Сообщений: 296

Re: Решение проблемы с потерей кэша firefox

А, извиняюсь, не посмотрел на патч. Да, изменение кода exe - не есть хорошо. В общем, лучше написать vbs скрипт который сначала изменяет _CACHE_MAP_, а потом запускает лису. Или, опять же, по-возможности, расширение, привязки к платформе не будет. Правда, я не знаю, как устроен кэш на Linux.


Бди!

Отсутствует

 

№1530-05-2005 13:10:24

kullibbin
Участник
 
Группа: Extensions
Зарегистрирован: 30-05-2005
Сообщений: 204

Re: Решение проблемы с потерей кэша firefox

написать vbs скрипт который сначала изменяет _CACHE_MAP_, а потом запускает лису.

Если делать хорошо, то надо, чтоб ни ярлыки, ничего другого не пострадало. То есть, надо делать ехе-шник, с ярлычком фокса, и называть его firefox.exe, а сам фокс переименовывать в firefox_.exe, например. Тогда запуск фокса и будет означать запуск этой программки, которая

сначала изменяет _CACHE_MAP_, а потом запускает лису

С другой стороны, патч всего лишь отменяет проверку этого бита, который приводит к срыву кэша, и после старта фокса к патченному участку обращений больше нет, имхо. Потому что так же можно пропатчить мозиллу, только там патчится dll-ка.  Так что нигде в другом месте, при работе браузера, это не отразится. Точнее - не должно отразиться :) Я хотел было написать на delphy, но... последний раз программил еще под cp/m, если кто такую помнит, на паскале... имхо, программер сделает и лучше, и быстрее. Это если делать ехе-шник.
А с расширением, которое после старта фокса принудительно установит этот бит в 0, как? Одно НО: если фокс будет запущен не по иконке, а щелчком по html-файлу, тогда как это будет работать, то есть - что раньше происходит, начало рендеринга и кэширования, или запуск расширений? Ведь расширение должно сбросить флаг после того, как он установится в 1 самим фоксом, но до того, как начнется обращение к кэшу. Может, перехватывать обращение к этому файлу, и сразу после этого сбрасывать бит?


Из практики:
- А скажите, Linux - это хороший Windows ?

Отсутствует

 

№1630-05-2005 14:33:20

kullibbin
Участник
 
Группа: Extensions
Зарегистрирован: 30-05-2005
Сообщений: 204

Re: Решение проблемы с потерей кэша firefox

все же, потестируйте несколько дней патчик, если все нормально - можно будет выложить на всеобщее качАние :) У меня пока все ОК, болтаюсь по сайтам...


Из практики:
- А скажите, Linux - это хороший Windows ?

Отсутствует

 

№1730-05-2005 14:44:50

Swappp
Участник
 
Группа: Members
Зарегистрирован: 09-10-2004
Сообщений: 237

Re: Решение проблемы с потерей кэша firefox

kullibbin
А как на счет исхожников? :) А то както странно патчить exe, когда они есть...

Отсутствует

 

№1830-05-2005 18:19:35

kullibbin
Участник
 
Группа: Extensions
Зарегистрирован: 30-05-2005
Сообщений: 204

Re: Решение проблемы с потерей кэша firefox

Решил провести эксперимент с патченным фоксом, дабы раз и навсегда разобраться, добро это или зло. Выяснил, что если фокс крэшанул, то кэш, набранный за последнюю сессию, и настройки не сохраняются. Предыдущий кэш остается (если фокс пропатчен), или обнуляется - если патча нет.

При старте фокса файл _CACHE_MAP_ считывается в память, а на исходный файл ставится флаг dirty. Вся работа кэша сохраняется в памяти, и только по выходу из фокса файл  _CACHE_MAP_ перезаписывается со сброшенным флагом и свежими данными. Если фокса крэшануть, то останется просто старый файл _CACHE_MAP_ - это, видимо, карта кэша, только с установленным флагом. Только и всего. То есть, даже этот бит переписывать не надо, достаточно сохранять _CACHE_MAP_ перед запуском, если он чистый, и при необходимости перезаписывать им меченый _CACHE_MAP_ , благо они идентичны будут. То, что он не изменяется - проверил в тотале, взял этот файл перед стартом фокса, и еще одну копию - после как походил по сайтам, при запущенном фоксе. Они оказались идентичными (кроме флага). Потом закрыл фокса - теперь в файле куча изменений. А размер у него всегда один и тот же, что и сбило с толку. Поэтому можно писать расширение, которое снимает этот бит, без проблем - его можно снять в любое время, пока работает фокс, после того, как он будет им установлен.
Теперь - что происходит при установке патча или обсуждаемого расширения.
Если после серфинга фокса крэшануть, то останется старый мап кэша, со снятым флагом :) Как будто последней сессии и не было. Осталось узнать, как это повлияет на работу кэша, не будет ли подмены объектов, или разрастания папки кэша. Сделал так.
Установил размер кэша 400 кило, чтоб много не качать. Обнулил весь кэш.
Попробую ничего не крэшать, набить несколько раз кэш и посмотреть, какая будет папка кэша размером :)
Выбрал несколько сайтов с картинками - галереями. Зашел на первый, закрыл фокса, потом на другой, снова закрыл, потом на третий, и снова закрыл. Пока грузил, кэш по логу доходил до 550 кило - при установленных 400, потом падал до 83 кило,  в конце загрузки установился на 47 кило, размер папки - 550. Многих объектов в кэше не было - картинки большие, одновременная загрузка нескольких картинок занимает весь кэш, вот он его и освобождает, грохая предыдущие картинки, а они большие. Обновил три картинки - кэш подскочил до 390 кило - картинки большие, под 120 кило каждая.
Вышел из фокса, снова запустил, подгрузил еще 4 новых картинки - кэш по логу - 380, размер папки - 770. В папке кэша, видимо, еще какие-то временные файлы сохраняются. Снова корректно закрыл и открыл фокса - и подгрузил еще 4 картинки, при загрузке размер кэша по логу так же прыгал, в конце получилось 390 кило в логе, и 750 в папке. Так что папка больше не растет, а уменьшается в размере. Механизм самоочищения и контроля кэша работает, значит.
Теперь буду крэшать фокса и наблюдать.
Захожу на первый сайт, набиваю кэш. При установленном размере кэша 400 кило, после загрузки "под  потолок" и последующего крэша по идее должен снова набираться новый кэш, и получиться более 800 кило в папке кэша, старый-то кэш он как бы должен не видеть, однако этого не происходит, после второго крэша размер папки 650 кило, и периодически уменьшается-увеличивается во время загрузки, то есть размер папки кэша стабилизируется. Еще два раза набирал по 500 кило ориентировочно и в конце крэшал - папка не растет дальше.

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

Забил кэш на первом сайте на 390 кило - по логу фокса, корректно вышел, снова открыл - кэш на месте, зашел на другой сайт, забил около 1 мега, чтоб старое очистилось и новое записалось, при открытии страничек размер  кэша колеблется 220 - 400 кило по логу фокса, очистка значит работает.
Подгрузил второй сайт, папка стала 630 кило, а перед тем была 700. Размер кэша по логу - 163. Посмотрел - от первого сайта осталось всего 4 картинки, маленьких, в кэше. Крэшанул.
Теперь он помнит карту предыдущего кэша размером 390, которого уже нет.  Проверяю - никаких глюков, просто нет картинок, да и все, хоть в кэше они и прописаны. При просмотре кэша - вместо картинок просто пустые странички. Захожу снова на первый сайт. Накачиваю кэш, как в первом случае. Набил, кэш по логу упал до 60 кило, и там ни одной подгруженной картинки нет - вот он, глюк :) . Однако реально - многие фотки на месте, по мере открытия фоток лог кэша растет. Никакого заметного трафика при этом нет. Как будто он заново прописывает имеющийся кэш в карте кэша и показывает в логе. Некоторые картинки он грузит из сети - по монитору трафика видно, есть трафик, прорисовка медленная, их действительно в кэше нет. То есть, глючные элементы в кэше отсутствуют! Размер папки - 670 кило. Все около этой цифры и крутится. То есть - никаких глюков, влияющих на отображение страниц, нет. Я боялся, что будет папка разрастаться, после каждого крэша, и что может быть крякозябры вместо нормального кэшированного объекта. Ничего подобного не наблюдается. Но выводы сделать можно :)

Swappp
А насчет исходников - я не программер, кто компилит - к ним :) Патч тоже хорошее дело, не надо качать переделанного откомпиленного фокса :)


Из практики:
- А скажите, Linux - это хороший Windows ?

Отсутствует

 

№1930-05-2005 18:27:49

arvin
Участник
 
Группа: Members
Откуда: Волгоград
Зарегистрирован: 20-10-2004
Сообщений: 201

Re: Решение проблемы с потерей кэша firefox

Firefox 1.0+ 20050525

патч не работает:(


Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1 - Build ID: 2006120418
Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU; rv:1.8.1.2pre) Gecko/20070116 Thunderbird/2.0b2 - Build ID: 2007011615

Отсутствует

 

№2030-05-2005 18:37:05

kullibbin
Участник
 
Группа: Extensions
Зарегистрирован: 30-05-2005
Сообщений: 204

Re: Решение проблемы с потерей кэша firefox

попробуй из консоли пропатчить оригинальный firefox.exe, что он там скажет? Найдет, что патчить?


Из практики:
- А скажите, Linux - это хороший Windows ?

Отсутствует

 

№2130-05-2005 18:55:21

arvin
Участник
 
Группа: Members
Откуда: Волгоград
Зарегистрирован: 20-10-2004
Сообщений: 201

Re: Решение проблемы с потерей кэша firefox

kullibbin пишет

попробуй из консоли пропатчить оригинальный firefox.exe, что он там скажет? Найдет, что патчить?

он то патчит, появляется файл FIREFOX.SAR но кеш все равно падает


Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1 - Build ID: 2006120418
Mozilla/5.0 (Windows; U; Windows NT 5.1; ru-RU; rv:1.8.1.2pre) Gecko/20070116 Thunderbird/2.0b2 - Build ID: 2007011615

Отсутствует

 

№2230-05-2005 19:04:41

RED
Модеpатор
 
Группа: Moderators
Откуда: Ульяновск
Зарегистрирован: 08-10-2004
Сообщений: 6084
Веб-сайт

Re: Решение проблемы с потерей кэша firefox

а в linux работать будет? у меня нет firefox.exe, есть firefox-bin

Отсутствует

 

№2330-05-2005 19:07:57

djet
Участник
 
Группа: Extensions
Откуда: 404 Not Found
Зарегистрирован: 20-11-2004
Сообщений: 2611

Re: Решение проблемы с потерей кэша firefox

20050527 Firefox/1.0+ нормально пропатчился.


Без бага и ошибки я софт Mozilla не люблю!
Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8.1.1) Gecko/20061204 Firefox/2.0.0.1
Microsoft® Office Outlook® 2007 (12.0.4518.1014) MSO (12.0.4518.1014)

Отсутствует

 

№2430-05-2005 19:20:50

kullibbin
Участник
 
Группа: Extensions
Зарегистрирован: 30-05-2005
Сообщений: 204

Re: Решение проблемы с потерей кэша firefox

arvin
В дип парке чуть по другому, там размер кэша откатывается к предыдущему состоянию. Если у тебя был 0, ты походил по нету, потом крэшанул, то 0 и получишь. Походи, набери чуток, потом выйди, снова запусти, глянь размер кэша, походи и крэшани. Последние похождения как корова языком, зато предыдущее все будет в лучшем виде :)


Из практики:
- А скажите, Linux - это хороший Windows ?

Отсутствует

 

№2530-05-2005 19:23:38

kullibbin
Участник
 
Группа: Extensions
Зарегистрирован: 30-05-2005
Сообщений: 204

Re: Решение проблемы с потерей кэша firefox

а в linux работать будет? у меня нет firefox.exe, есть firefox-bin

а в линукс можно скрипт написать, смысл - сохранение файла мап и при запуске - проверка на вшивость, если был крэш - то этот файл перезаписать. Я вроде все понятно растолковал, читай внимательнее. Еще вот тоже - http://forum.mozilla.ru/viewtopic.php?pid=24170#p24170


Из практики:
- А скажите, Linux - это хороший Windows ?

Отсутствует

 

Board footer

Powered by PunBB
Modified by Mozilla Russia
Copyright © 2004–2020 Mozilla Russia GitHub mark
Язык отображения форума: [Русский] [English]