環境
インターネットにアクセスできない無線 LAN で、同期された HTML5 スライドショーを約 50 人の観客に見せるためのアプリケーションを作成しています。
コンピューターの 1 つで Node.js サーバーを実行し、Socket.IO 経由で 50 のクライアントに接続します (ちなみに、そのうちの 1 つだけがプレゼンテーションを制御します)。
ハードウェアは、国内のワイヤレス 802.11b/g ルーターと 50 台のモバイル デバイス (タブレット、ネットブック、スマートフォン) です。
問題
スライドショーが開始されると、ルータがすべてのクライアントに同時に完全なスライドショーを送信する必要があるため、クライアントがスライドショーを見るのに時間がかかりすぎます (5 MB のスライドショーの場合、約 10 分以上)。
スライドショーの外観
<html>
<head>
<title>My Slideshow</title>
<script src="javascripts/slidesplayer.js"></script>
<link rel="stylesheet" href="/stylesheets/style.css">
</head>
<body>
<div id="slides-containter">
<div class="slide" id="slide_1">
<!--Contents such as images, text, video and audio sources -->
</div>
<div class="slide" id="slide_2">
<!--Contents -->
</div>
<!--A bunch of slides here-->
</div>
<script>
// Here I load the slides
</script>
</body>
</html>
やりたいこと
slides-container
最初は、完全に空の要素をロードしたいと思います。
次に、スライドショーを進めながら、サーバーから次のスライドを表す GETを取得し、それを DOM に追加して、それが完了したときにのみdiv
クライアントが写真やその他のもののダウンロードを開始するようにします。そのスライド(したがって、ネットワークの過負荷が大幅に減少します)。
もう 1 つの関連する事実は、スライド ショー (を含むslidesplayer.js
) は、PowerPoint プレゼンテーションをこの HTML5 形式に解析する外部ソフトウェアから自動的に生成され、PowerPoint で既に作成されている多くのプレゼンテーションを使用することです。
div.slide
私の最初の印象は、jQuery-ajax を使用してこれを達成する必要があるということですが、私の考えは要素を別々のファイルにコピーするだけなので、良い方法でそれを行う方法が正確にはわかりません。
更新: この回答は、表示する前に DOM 操作に jQuery を使用することを提案しています。jQuery は、現在の DOM に挿入されていなくても、DOM オブジェクトを操作するたびにリソースを要求しているようです。したがって、考えられる解決策の 1 つは、文字列のみで動作することです。この問題の詳細については、thisおよびthis question で確認できます。