はじめに
Electronアプリケーションで、Zipファイルでアーカイブされた画像ファイルを表示すべく少しづつ調査しています。
Zipファイルは、ファイル解凍せずに表示することができるのですが、次の問題があります。
- 7zip形式のファイルに対応できない。(たぶんrarとかも)
- スライドショー表示する場合には、実ファイルの方が都合が良い。
- メモリ消費量が大きくなる
一時的に、ファイル解凍した場合気になるのが、HDDの場合はレスポンスで、SSDであれば書き換え回数です。
気にし過ぎかも知れませんが、対策を考えてみました。
RAMディスクを利用する
Ubuntuでは、tmpfsというファイルシステムが利用されています。
名前から察する通り一時的なファイルを置くためのRAMディスクのためのファイルシステムです。
再起動したときには綺麗さっぱりファイルが無くなりますが、オンメモリで読み書きされるためとても高速です。
さらに利用されていない空き容量は、OSが利用できるためメモリ効率も良いようです。
調べてみると/dev/shm
が、tmpfsで、利用可能な状態になっています。
環境変数を設定するだけで利用できる
freedesktop.orgという規格があり、準拠したアプリケーションは、環境変数XDG_CACHE_HOME
に、パスが設定されていれば、そこをキャッシュとして利用する約束になっています。
ちなみに、chromeとかもfreedesktop.org規格に対応しているため一時ファイルなどが、RAMディスクに保存されるようになります。
# キャッシュディレクトリの指定
export XDG_CACHE_HOME=/dev/shm/.cache-$(whoami)
# 他のユーザは読み書きできないようにする
mkdir -p ${XDG_CACHE_HOME}
chmod 700 ${XDG_CACHE_HOME}
参考:一般ユーザのfreedesktop.org準拠アプリケーション向けキャッシュディレクトリをメモリ上に配置する
環境変数が設定されていない場合には、${HOME}/.cache/
が使用されます。
おわりに
Electronのアプリケーションをfreedesktop.org準拠に作成しておけば、ユーザーの設定によって、高速なRAMディスクを選択できそうです。