espar crawler は、弊社が独自に開発した超高速静的化エンジンです。
並列処理が得意なGo言語を採用
大量のWordPressページを高速に静的化するには、並列処理(複数ページを同時に静的化)が欠かせません。espar crawler では、並列処理が得意なGo言語で開発しています。
StaticPressやSimplyStaticやWP2Static など、オープンソースのWordPress静的化プラグインは多数ありますが、その実装は、wgetコマンドやPHP経由でlibcurl(cURL)が使用されており、シングルプロセスで動作しています。つまり、同時に1つのページ、1つのリソースしか静的化できません。
espar crawler では、複数のスレッドが協調して複数ページを同時に静的化することができます。
また、ページをhtml化する処理を行いながら、htmlから参照される画像やCSSファイルを取得する処理を同時に走らせることで高速に静的化を行えるようになっています。
複雑なリソースの取得
Webサイトをhtml化するとひとことで言っても、実はそれほど簡単な事ではありません。
htmlから参照されている画像/動画/CSS/JavaScript/PDFなど、ページを構成するリソースファイルは膨大です。それらを一つの漏れもなく取得しなければ静的化はうまくいきません。
例えば、以下の例のような、特殊な表記をしているhtmlがある場合、多くの静的化プラグインでは画像を正しく取得できません。
espar では、このような特殊な書き方をしている html でも、漏れもなく取得できます。
espar crawler で取得できる複雑なリソース例
- <a> タグ以外のタグに指定されたリンク先ページURL
- html5 の svg タグや data-* 属性に指定されたリソース
- @importで外部参照している別cssのbackground-imageにurl指定された画像
- 特定のhttpリクエストヘッダを含めて初めて表示されるページとその参照リソース
JavaScriptレンダリング
espar の静的化エンジンは、JavaScriptのレンダリングが可能です。
つまり、既存の静的化プラグインや wget 等では難しかった「JavaScriptが実行されなければ確定しないリンク先ページや参照リソース」も取得できることを意味しています。
espar crawler の UserAgent は以下の通りとなっています。
IPアドレス | 当社がお知らせするIP (13.113.4.0/24) |
---|---|
UserAgent | Mozilla/5.0 (compatible; espar 1.x.x) |
WordPressの環境(サーバ)によっては、espar crawler による静的化アクセスをDoS攻撃と誤認してしまうレンタルサーバ会社があります。
レンタルサーバ会社様へ
espar では、Webサイトを静的化(html化)するために、弊社開発のクローラ(espar crawler)からWordPress環境に多くのアクセスを行います。
これらはお客様の同意に基づいたものであり、攻撃を意図したものではありません。espar crawler からのアクセス負荷が高い場合は、
- espar crawler によるアクセス頻度を下げる
- espar crawler で静的化する対象を絞り込む
などを御客様と調整の上で実施させて頂きます。
espar crawler によるアクセスは決して攻撃等を意図しているものでは御座いませんので、突然のアクセス制限実施などは控えて頂けますようお願い申し上げます。(御客様のサイトが閲覧できなくなる、急激に遅くなる…などのトラブルに発展する恐れが御座います)
何卒御協力のほどを宜しくお願い致します。なお、espar の仕組みなど詳細につきましては esparの仕組み などのページを御覧下さい。