Захотелось мне еще немного ускорить Firefox после сборки стабильной версии. Самый простой и очевидный способ – переместить кэш браузера с жесткого диска в оперативную память. Плюс такого решения очевиден:
- Оперативная память быстрее жёсткого диска.
Но и минусы есть:
- Необходимо хранить более-менее актуальную версию кэша на жестком диске.
- Нужно копировать данные с жесткого диска в оперативную память при запуске браузера, что увеличивает время загрузки Firefox.
- Какой-никакой а контроль на случай непредвиденных ситуаций должен присутствовать.
На мой взгляд более-менее нормальная реализация – использование системы инициализации системы (systemd или SysVinit). При старте системы оно бы копировало кэш с жесткого диска в оперативную память, а при выключении компьютера – в обратном порядке.
Однако это усложняет демонстрацию принципа работы. При желании это можно сделать самостоятельно, в моём же примере главное – изложить суть понятно, и в первую очередь для себя из будущего =)
Подготовка и кратко о tmpfs
Tmpfs – файловая система,которая размещается в оперативной памяти. Её то и будем использовать. Для этого в файл /etc/fstabдобавим примерно такую строчку:
tmpfs /home/ozi/.cache/mozilla tmpfs noauto,user,size=400M 0 0
Где
- /home/ozi – домашняя папка пользователя, для которого будет переноситься кэш
- .cache/mozilla – директория, где Firefox хранит свои временные файлы
- noauto – монтировать файловую систему можно только вручную
- user – смонтировать файловую систему может пользователь
- size=400M – размер в мегабайтах
Стоит отметить, что размер должен быть чуть больше, чем установленные для кэша Firefox в его настройках:
Скрипт запуска Firefox с копированием кэша в оперативную память
Необходимо создать файл с именем, к примеру, firefox_tmpfs.sh следующего содержания:
#!/bin/bash #папка с кэшем программ в домашней директории cache_dir=/home/ozi/.cache/ #папка с кэшем Firefox mozilla_dir=$cache_dir/mozilla #директория, предназначенная для хранения кеша, когда Firefox не работает mozilla_backup_dir=$cache_dir/mozilla_b #файл, необходимый для блокировки запуска в случае непредвиденной ситуации lock_file=$cache_dir/firefox_lock if [ -f $lock_file ]; then echo "Существует $lock_file, Firefox запущен или был некорректно завершен" echo "Для избежание потери данныех требуется ручное вмешательство" exit 1 fi echo "Монтируем ФС в памяти" touch $lock_file rm -rf $mozilla_dir/* mount $mozilla_dir echo "Копируем кэш Firefox с жесткого диска в память" cp -r $mozilla_backup_dir/* $mozilla_dir/ echo "Запускаем Firefox" firefox echo "Копируем кэш Firefox из памяти на жесткий диск после окончания работы" rm -rf $mozilla_backup_dir/* cp -r $mozilla_dir/* $mozilla_backup_dir/ echo "Отключаем tmpfs" umount $mozilla_dir rm $lock_file echo "Готово"
И дать ему права на исполнение:
$ chmode +x firefox_tmpfs.sh
Осталось переместить актуальный кэш в папку его хранения и создать точку монтирования tmpfs:
$ mv ~/.cache/mozilla ~/.cache/mozilla_b $ mkdir ~/.cache/mozilla
Готово, теперь Firefox запускать нужно через эту обёртку (и только через неё):
./firefox_tmpfs.sh
Чет скопировать текст в виндовом браузере низзя (
да, и команды с очепятками — не chmode, a chmod