【Lifehacks】リンク先URIをランダムに出力する

■タスク
・ウェブページ上に設置したリンクに関し、リンク先URIをランダムに出力する。


■目的
・リンク先コンテンツ(ウェブページ、ウェブアプリケーション、ダウンロードファイル等)へのアクセス増大が予想される際、負荷分散のために複数サーバに同等コンテンツを配置し、クライアント側にランダムに返却する。


■仕様
スクリプト先頭で配列変数に予め代入した複数URIに基づきリンク先をランダムに出力する。
・ランダムリンクであることの注意文、リンク文字列等もスクリプト内変数で定義する。


■使用方法
・以下のSamplePage.htmlのようにウェブページに埋め込んで使用する。

SamplePage.html

<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
 <head>
  <meta http-equiv="Content-Type"        content="text/html; charset=Shift_JIS">
  <meta http-equiv="Content-Language"    content="ja">
  <meta http-equiv="Content-Script-Type" content="text/javascript">
  <title>サンプルページ</title>
  <script type="text/javascript" src="SgRandomLink.js" charset="Shift_JIS">
  </script>
 </head>
 <body>
  <h1>サンプルページ</h1>
  <p>
  これはランダムリンクのサンプルページです。
  ダウンロードは以下のリンクから実行してください。
  </p>
  <script type="text/javascript">
  <!--//
   SgRandomLink(); 
  //-->
  </script>
  <noscript>
  <!--
  JavaScript無効のブラウザ向け固定リンク記述する。
  -->
  <a href="./SgRandomuLink20081023.zip">ダウンロード</a>
  </noscript>
 </body>
</html>


■プログラム

//
// SgRandomLink.js
// リンク先URIをランダムに出力する。
//
// Author: Orihika Ikuo
// Create: 2008.10.23
// Update: 2008.XX.XX
//

function SgRandomLink() {
  // ランダムに出力したいコンテンツのURIを記述する。
  var aryUriList = [
    "./SgRandomuLink20081023.zip",
    "./SgRandomuLink20081023_01.zip",
    "./SgRandomuLink20081023_02.zip"
  ]
  // リンクの直前に書く説明文を記述する。
  var msg =
    "<p>" +
    "※負荷分散のため、複数のダウンロードサイトから1箇所をランダムに選択します。" +
    "</p>"
  ;
  // リンクを張る文字列を記述する。
  var label = "ダウンロード";
  var index = Math.floor(Math.random() * aryUriList.length);
  var uri   = aryUriList[index];
  document.write(msg); 
  document.write(label.link(uri)); 
}