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








Trackback URL
One Trackback/Pingback
prototype.jsは1つでいい | Tech de Go
Post a Comment