Single Article

prototype.jsは1つでいい

AJAXなプラグインを試しているが、Addicted Live Search と、AJAX Calendar2(giraffe calendar)は使おうと思う。これとShare-thisを合わせて、3つのプラグインがバラバラにprototype.jsを読み込むようにヘッダーに<script>タグを書き込んでいることが判明。下の図のように同じファイル(バージョンも同じだった)が3つ読み込まれていてしかも、56Kbと、本文より大きい。読み込み時間にも影響しそう。

prototype.jsを複数読み込んでいる..

ちなみに他のWordpressのサイトも確認させてもらったが(失礼!)動的なサイトでは、prototype.jsが2個あるいは3個、読み込まれているところが多かった。これは何とかしたいのだが、プラグインのスクリプトを直接書き換えると、どれで(prototype.jsを)読み込ませて、どれで読み込ませないかの管理が大変になる。また、プラグインのバージョンアップの度に書き直したくない。

そこで、header.phpに修正を加えることにした。どのプラグインも、”wp_header();”が呼び出された際に<script>タグを書いているようなので、書き込んだ後でそこからprototype.jsの読み込み行を削除して、最後にwordpress本体に付随しているprototype.jsを「1つだけ」読み込ませるために書き込んでから、吐き出す。

PHP

<?php
function undup_prototype($contents) {
   $replaced = preg_replace("/<script.*prototype\.js.*>.*<\/script>.*\n/i",'',$contents);
   if($replaced !== $contents) {
      $replaced = '<script type="text/javascript"
         src="'.get_bloginfo('wpurl').'/wp-includes/js/prototype.js"></script>'."\n".$replaced;
   }
   return $replaced;
}
ob_start('undup_prototype');
<strong> wp_head();</strong>
ob_end_flush(); ?>

wp_head()の前後に上記のように追加するだけ。

それで以下のように、prototype.jsは1つだけ読み込まれ、トータル読み込み時間も減ら...なかった。読み込み時間にはあまり影響しないみたい。もしかしたらヘッダーから削除している間に垂れ流した方が早いかも?

prototype.jsを1個読み込んだ図

Related Posts

Trackback URL

One Trackback/Pingback

  1. prototype.jsは1つでいい | Tech de Go

Post a Comment

Your email is never published nor shared.