Захотелось мне еще немного ускорить 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 с копированием кэша в оперативную память

Необходимо создать файл с именем, к примеру, 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

Навигация по записям