[WordPress] リビジョン管理・自動保存を停止するか、DB最適化か

WordPress には「リビジョン管理」と「自動保存」が標準で備わっています。

「リビジョン」とは?

リビジョンとは、改訂、改正、補正、改訂版などの意味を持つ英単語。ITの分野では、ソフトウェアやハードウェアの発売・公開後に細かい変更や修正を加えた改訂版のことや、複数の改訂版を識別する通し番号(リビジョン番号)を指すことが多い。

IT用語辞典 e-Words より引用

ちょっと難しいですが、WordPress で言えば記事を更新しても、その前の記事がちゃんと残っているという事です。何度更新しても改訂履歴が全て残っています。(リビジョン管理
更新を間違えた時や前の方が良かった時などでも、好きな時点の記事に戻せます。手違いで記事の一部や全部を消して更新してしまった場合にも、元に戻すことができるのです。

自動保存機能

また、WordPress には記事を自動で保存してくれる機能もあります。うっかり更新を忘れてブラウザを閉じてしまっても、その時点までの更新が残っているのです。あまりないでしょうが、記事の作成途中に停電になったとしてもサーバー側には保存されています。せっかく書いた記事が、まるまる消えてしまう事がなくなるのです。

なお、保存される間隔はデフォルトで60秒毎。その間に文字を入力しなければ上書きはされません。また、自動保存してもリビジョンは増えません。改訂履歴を残したい時は、手動で保存しましょう。

見逃せないデメリット

これらの機能はとても便利ですが、ネットでは不評のようです。理由は、

サーバーを圧迫して、サイトが重くなる

リビジョン機能はありがたいのですが、更新する度にリビジョンが増えます。これはデーターベースに保存されます。記事を1文字でも20回更新すると、本記事以外に20個の過去記事が作られます。ほとんど使わない過去の履歴が全て溜まってしまうのです。データーベースの容量を圧迫し、ひいてはサイトの表示が遅くなってしまうというのです。

でも個人的には、そうではないと思っています。

リビジョンとして保管されるのは、タイトル・本文などテキストデータのみです。画像などのデータを多重で保存するわけでないので、容量もそれほど大きくはなりません。最近のレンタルサーバーでは十分すぎる容量を持っているので、そう簡単に制限を超えたりはしません。
(高画質写真や動画を数万件など大量にアップする場合を除く)

件数については、データーベースというのは大量のデータ(数百万件~)を高速に処理するシステムです。小規模なサイトやブログで1000記事あっても、せいぜい数万件。レスポンスへの影響はほとんどないでしょう。

また、ネット上では自動保存も同時にサーバー圧迫すると語られているようですが、気にすることではないと思います。自動保存されたデータは自動的に消えていくので、容量を圧迫することはありません。

※ 詳しくは後述のリンク参照

対処法1(機能の停止・調整)

リビジョン管理を止める・制限する

プラグインを使う

「 Revision Control 」というプラグインを導入すれば、実現できます。
・投稿リビジョンを保存しない
・リビジョン最大保存数: 2 ~ 100
と、機能を停止・制限することができます。

この種のプラグインは、他にもたくさんあります。

wp-config.phpを編集する

wp-config.phpを編集する方法もあります。プラグインを使用したくなければ、腕に自身のある方、どうぞ。

●完全に止める

// リビジョン機能を無効にする
define('WP_POST_REVISIONS', false);

●保存数を制限する

// リビジョン保存数を 5 に制限する
//(‘ABSPATH’の上に挿入)
define('WP_POST_REVISIONS', 5);

自動保存を止める・制限する

プラグインを使う

ブロックエディタを使っている場合は「Disable Gutenberg Autosave 」プラグインで出来ます。
・機能を停止(Disabled)
・10秒(10 seconds (default))~ 30分(30 minutes)
と設定出来ます。

phpを編集する

phpを編集する方法もあります。プラグインを使用したくなければ、腕に自身のある方、どうぞ。

●完全に止める

[functions.phpを編集]
// 自動保存を無効にする
function autosave_off() {
  wp_deregister_script('autosave');
}
add_action( 'wp_print_scripts', 'autosave_off' );

●自動保存の間隔を調整する

[wp-config.phpを編集]
// 自動保存の間隔を10分にする
define('AUTOSAVE_INTERVAL', 600);

対処法2(データーベースを最適化する)

私の場合、プラグインを多数入れるのは嫌なので、phpを編集して以下の設定をしていました。
・リビジョン管理→無効
・自動保存機能→無効

しかし、もっと良い方法を見つけたので、今はこちらを採用しています。

WP-Optimize プラグイン

データーベースの最適化をしてくれるプラグインです。不要になったリビジョン・自動下書き・スパムコメントなどを削除し、データーベース自体を最適化することもできます。データーベースの動作を早くしてくれるのです。

古いリビジョンを削除できる

データーベースの残っている、もう使わないだろうリビジョン(改訂履歴)を削除してくれます。
残しておく期間も設定できます。(2周間~99週間)

最適化を自動実行できる

最適化のスケジュールを設定できます。(毎日、毎週、半月毎、毎月)

なお、私は自動化せずに毎回手動で最適化することにしました。無いとは思いますが最適化中にトラブルが発生するかもしれません。事前にバックアップをとってから最適化しています。

その他の機能も満載

過去のリビジョン削除以外にも、自動下書きの削除・ ゴミ箱の掃除・スパムコメントの削除なども行ってくれます。
さらに、データーベース自体を最適化すてきれますので、動きも軽くなります。

不要な時は停止できる

どのプラグインもそうですが、有効化したままだと少なからずサーバーに負荷をかけます。そこで、最適化する時以外は停止しています。見てくれる方の表示速度を少しでも速く、のためです。

WP-Sweep プラグイン

前述の「WP-Optimize」プラグインは一番有名な最適化プラグインですが、不具合がある事も報告されています。データーベースを直接アクセスしてデータを削除しますが、場合によって孤立したデータ(本当のゴミ)が残る事があったそうです。
(最新バージョンではそれを削除する機能もあります)

ただ WP-Sweep は、自動で行う機能はないようなのです。両方のプラグインを導入し、使い分けるのも一案です。

特徴

・WordPress が備えている削除機能を使用して最適化する(データーベースを直接いじらない)
・最適化できるデータの種類が多い
・孤立したデータも削除できる
・どういうデータが溜まっているのか一目で分かる

最後に

ID の問題

本記事では説明していませんが、リビジョン管理・自動保存が有効のままだと「記事ID がやたら大きくなる」という弊害はあります。しかし、ID は表に出てくるわけではないし、そういうものだと割り切ることにしています。

詳しくは次の記事を御覧ください。
 → 記事のデーターベース上での管理方法と ID について

こまめに保存する!

自動保存は便利そうですが、反映されないケースがあります。(上記リンク参照)
過度に期待してはいけません。記事の編集中は、その都度保存・更新しましょう。

これはWeb作成に限らず、広くあてはまる事です。例えば Word や Excel で文書を作成中に電源が切れたら、それまでの作業が水の泡。最近は「自動保存」の機能もありますが、どこまで打ったものか分かりません。一区切りついたら上書き保存する癖をつけておきましょう。

文書を修正する前に、元ファイルをコピーしておけばなお万全です。(これがリビジョン管理)

コメント

タイトルとURLをコピーしました