Jump to content
From ArchWiki
< Firefox (Русский)
Состояние перевода: На этой странице представлен перевод статьи Firefox/Profile on RAM. Дата последней синхронизации: 30 ноября 2022. Вы можете помочь синхронизировать перевод, если в английской версии произошли изменения.

Предположим, что есть свободная память, тогда, поместив кэш или полный профиль Firefox в оперативную память, мы получим значительные преимущества. Несмотря на то что выберите, частичный перенос является улучшением сам по себе, а последний может сделать Firefox ещё более отзывчивым, по сравнению со стандартной конфигурацией. Полученные преимущества:

- уменьшение дисковых операций чтения/записи;
- повышенная отзывчивость;
- многие операции в Firefox, такие как быстрый поиск и история запросов, происходят почти мгновенно.

Для этого мы можем использовать tmpfs.

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

Примечание: Кэш хранится отдельно от профиля Firefox, находящегося по умолчанию в (`/home/$USER/.mozilla/firefox/`): кэш находится по умолчанию в `/home/$USER/.cache/mozilla/firefox/<profile>`. Это также относится и к Chromium и к другим браузерам. Поэтому разделы #Размещение профиля в оперативной памяти с помощью инструментов и #Размещение профиля в оперативной памяти вручную не имеют дело с перемещением кэша и синхронизацией, только с настройками профиля. Смотрите статью Profile-sync-daemon (Русский) для более подробной информации. Anything-sync-daemon может быть использован также как 2 Вариант для каталогов кэша.

## Размещение кэша только в оперативной памяти

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

- откройте в адреснойстроке `about:config`
- установите `browser.cache.disk.enable` на "false" (двойным щелчком по строке)
- проверьте что значение `browser.cache.memory.enable` установлено в "true" (значение по умолчанию)
- добавьте запись (щелчёк правой кнопкой мышки->Создать->Целое) `browser.cache.memory.capacity` и установите размер в KB который вы хотите запасти, или в -1 для автоматического определения размера кэша. (Пропуск этого шага имеет тот же эффект, что и установка в значение -1.)

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

Избежание первого недостатка заключается в том, чтобы использовать anything-sync-daemon или аналогичный периодический скрипт синхронизации, так что кэш будет копироваться на диск регулярно.

## Размещение профиля в оперативной памяти с помощью инструментов

Перенесите профиль браузера в tmpfs для глобального улучшения отклика браузера. Ещё одним преимуществом является снижение числа операций ввода-вывода, из которых накопители SSD извлекут максимум выгоды.

Используйте активные скрипты управления для максимальной надёжности и простоты использования. Некоторые доступны в AUR.

- profile-sync-daemon - для получения дополнительной информации обратитесь к статье wiki Profile-sync-daemon;
- firefox-syncAUR - достаточно для пользователя с одним профилем; использует скрипт и службу systemd, аналогичные приведённым ниже.

## Размещение профиля в оперативной памяти вручную

### Прежде чем начать

Сделайте резервную копию для быстрого восстановления на случай проблем. Замените `xyz.default` на название вашего профиля и используйте `tar` для создания резервной копии:

    $ tar zcvfp ~/firefox_profile_backup.tar.gz ~/.mozilla/firefox/xyz.default

### Скрипт

Адаптирован из verot.net Ускорение Firefox с помощью tmpfs

Скрипт сначала переместит профиль Firefox на новое статическое место, создаст подкаталог в `/dev/shm`, и мягкую ссылку, а затем заполнит его содержимым профиля. Замените выделенную секцию. Единственное значение которое необходимо изменить, опять же `xyz.default`.

Убедитесь, что установлен rsync, и создайте файл:

    ~/.local/bin/firefox-sync.sh

    #!/bin/sh

    static=static-$1
    link=$1
    volatile=/dev/shm/firefox-$1-$USER

    IFS=
    set -efu

    cd ~/.mozilla/firefox

    if [ ! -r $volatile ]; then
    	mkdir -m0700 $volatile
    fi

    if [ "$(readlink $link)" != "$volatile" ]; then
    	mv $link $static
    	ln -s $volatile $link
    fi

    if [ -e $link/.unpacked ]; then
    	rsync -av --delete --exclude .unpacked ./$link/ ./$static/
    else
    	rsync -av ./$static/ ./$link/
    	touch $link/.unpacked
    fi

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

    $ killall firefox firefox-bin
    $ ls ~/.mozilla/firefox/
    $ ~/.local/bin/firefox-sync.sh xyz.default

Запустите Firefox еще раз, чтобы оценить результаты. Во второй раз запустится скрипт, он сохранит профиль из RAM путем копирования его обратно на диск.

### Автоматизация

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

#### systemd

Создайте следующий файл:

    ~/.config/systemd/user/firefox-profile@.service

    [Unit]
    Description=Firefox profile memory cache

    [Install]
    WantedBy=default.target

    [Service]
    Type=oneshot
    RemainAfterExit=yes
    ExecStart=%h/.local/bin/firefox-sync.sh %i
    ExecStop=%h/.local/bin/firefox-sync.sh %i

Затем выполните daemon-reload для пользовательского экземпляра systemd и запустите/включите пользовательскую службу `firefox-profile@xyz.default.service`.

#### Задание cron

Действуйте пользовательским cron используя таблицу `crontab`:

    $ crontab -e

Добавьте строку, чтобы запускать сценарий каждые 30 минут,

    */30 * * * * ~/.local/bin/firefox-sync.sh xyz.default

или добавьте следующую, чтоб выполнять каждые 2 часа:

    0 */2 * * * ~/.local/bin/firefox-sync.sh xyz.default

#### Синхронизация при входе/выходе

Используя bash, добавьте скрипты в файлы входа/выхода:

    $ echo 'bash -c "~/.local/bin/firefox-sync.sh xyz.default > /dev/null &"' | tee -a ~/.bash_logout ~/.bash_login

Примечание: Вы можете использовать `~/.bash_profile` вместо `~/.bash_login` т.к. bash будет читать только первый из них, если они оба существуют и могут быть прочитаны.

Для zsh используйте `~/.zlogin` и `~/.zlogout`:

    $ echo 'bash -c "~/.local/bin/firefox-sync.sh xyz.default > /dev/null &"' | tee -a ~/.zlog{in,out}

## Смотрите также

- tmpfs (Русский)

Category:

- Web browser (Русский)