さて、個々最近のブログはマニアックなネットセキュリティに関してのものが続きました。本来ならここで、最近の国内メディアを騒がせている「遠隔PC操作ウィルス」に、ホットなネタということで嬉々として便乗し、何か喋るのが筋なのでしょうが、天邪鬼な私は、「だが、断る」と言い放ちます(笑)。今回のテーマは、またもや(またか!)ウェブサイトのスピードアップについてです。今回は、「.htaccess」ファイルをいじります。
 
pic speed弊社が構築、または再構築するウェブサイト~主に法人向けのものですが~は、ユーザーによる更新の容易さ(ほとんど自分でできちゃいます)やサイト機能を将来的に拡張する際の便利さから、最近ではCMS(コンテンツ・マネジメント・システム)の上で開発します。その中でも、世界的に見てぴか一の技術と発展性を持つJoomlaを用いています。ただ、唯一の難点が、背後でDB(データベース)をフル活用するため、昔ながらのペラペラのHTMLベースな静的サイトより速度が遅くなってしまうこと。
 
もちろんこの問題の解決のために色々な技術が講じられています。Joomla内部で設定を行うことで、ファイルを圧縮送信したり、システムキャッシュを用いたり、キャッシュや圧縮系のextensionを用いて速度アップしたり(ここら辺の記事:cache、cache、cache…Joomlaキャッシュ入門にも書きました)。それらを駆使することで随分と速度向上は認められます。さらには、DB自体のエンジンを取り替える(Joomlaの速度向上~MariaDBという選択肢)ということも大きな向上を見ます。
 
でも、もっと根源的に、httpd、つまりはウェブサーバーの設定をいじることで速度を上げるという方法もあるやんけ!ということですね。恥ずかしながらあまりこれまでここには気をつけていなかったので、今回この記事を読んで深く納得し、当てはまるものを試しました。その結果、さらなるスピード向上に成功しました。今までは私のデスクトップ回線で平均2秒かかっていたページ読み込みがほぼ1秒でloadするように。よかったよかった。記事の書き手に感謝です。
 
早速、頼まれてもないのに、お客さんのサイトごとの.htaccessをいじって速度向上しておきました。こういうのは、ウェブ開発とサーバー管理がセットになっている強みですね。…と宣伝しておく。
 
繰り返しになりますが、今回のものは.htaccessによる工夫ですので、別にJoomlaを使っている必要はありません。WordPressを使っていても、他のCMSを使っていても、或いは全てカスタムベースでサイト構築をしていても、恩恵をこうむることが可能。ですので、ここに備忘録的にメモっておきます。
 
まずは、Apacheのmod_headermod_expiresが組み込まれている場合の設定コードです。弊社サーバーは両方とも組み込んであるので、下のようになります。片方だけの場合は、上記の記事へ行って確認して下さいね。ちなみに、組み込まれているかどうかは、shellアカウントで「/usr/sbin/httpd -l」(Linux系の場合)とやれば、enabledなモジュールがごろごろリストアップされますから、それで分かります。くれぐれも自己責任でやって下さいね。当方は責任を負えませんので。また、念のため「.htaccess」ファイルをバックアップしてからの実験を!
 
# Turn on Expires and set default to 0
ExpiresActive On
ExpiresDefault A0

# Set up caching on media files for 1 year (forever?)
<filesMatch "\.(flv|ico|pdf|avi|mov|ppt|doc|mp3|wmv|wav)$">
ExpiresDefault A29030400
Header append Cache-Control "public"
</filesMatch>

# Set up caching on media files for 1 week
<filesMatch "\.(gif|jpg|jpeg|png|swf)$">
ExpiresDefault A604800
Header append Cache-Control "public"
</filesMatch>

# Set up 2 Hour caching on commonly updated files
<filesMatch "\.(xml|txt|html|js|css)$">
ExpiresDefault A7200
Header append Cache-Control "proxy-revalidate"
</filesMatch>

# Force no caching for dynamic files
<filesMatch "\.(php|cgi|pl|htm)$">
ExpiresActive Off
Header set Cache-Control "private, no-cache, no-store, proxy-revalidate, no-transform"
Header set Pragma "no-cache"
</filesMatch>
 
この、そのままグルたちから拝借したコードを少し読めば分かると思いますが、閲覧者のブラウザのキャッシュ設定を操作しております。なんだかえぐいですね!いや、それがどうした!?速度には代えられないのです。滅多に変更することの無いサイト上のファイルはずっとキャッシュさせておき、動的にしょっちゅう変化するファイルだけを毎回サーバーに読みに行かせる、という命令を出す訳です。
 
次に、Apacheのmod_deflateを利用しての設定です。GzipでのHTMLファイルの圧縮は基本中の基本ですが、それ以外のファイル種類も圧縮することで、ファイルを小さくして、通信速度を短縮するということですね。
 
# compressing of files
AddOutputFilterByType DEFLATE text/plain
AddOutputFilterByType DEFLATE text/html
AddOutputFilterByType DEFLATE text/xml
AddOutputFilterByType DEFLATE text/css
AddOutputFilterByType DEFLATE application/xml
AddOutputFilterByType DEFLATE application/xhtml+xml
AddOutputFilterByType DEFLATE application/rss+xml
AddOutputFilterByType DEFLATE application/javascript
AddOutputFilterByType DEFLATE application/x-javascript
 
これを.htaccessに追加して、それでサーバー側のキャッシュやブラウザ側のローカルキャッシュをクリアしてから、サイトにアクセスしてみて下さい。何度か色々なページを閲覧してみて下さい。どうです?速くなったでしょうか?きっとなったはず!
 
「まじでマニアックやな!」と呆れられそうですが、最近のWeb Hosting Newsにあったように、「Compuware Gomez Researchの調査によれば、ウェブ上での商いの成約率は、読み込み速度が8秒から2秒に短縮されると74%も上がる」のですからね!まだまだ道は遠いのです。Never stop learning!
 
ブログトップへ
「security audits」と言います。

よく使われる0-1024までのportは無論のこと、そこに脆弱性の多い1500以上のportをチェック。
それだけならただの「free port scan」なので、PC向け。

で、「standard」テストの場合、実に32,169の脆弱性についてテストしてくれます。
実際、わずか直近の30日間の間に709 new tests in the last 30 days

加えて嬉しいのが、DOS(Denial of Service)テストまで付加すること。これは、ご存知のようにサーバーに高負荷をかけるため、外すことも。

無料なのだが、ポイントは「サーフできるportからしかできない」。
/

 blog update calendar

June 2019
MoTuWeThFrSaSu
272829303112
3456789
10111213141516
17181920212223
24252627282930