5

currentTimeユーザーが Web ページを離れたときに、HTML5 ビデオの位置をデータベースに保存したいと考えています。window.onbeforeunloadそれを行うための信頼できる方法ではないようです(望ましくないポップアップウィンドウが表示されることは言うまでもありません!)。これを行うより良い方法はありますか?

定期的に位置をサーバーに保存する以外に考えられません。しかし、それは無駄なリソース/帯域幅のようです。Netflix は、最後に見た位置をよく覚えているようです。どうすればそれを確実に達成できるでしょうか? 低レベルのサーバー側 C/C++ コードでしょうか?

4

1 に答える 1

6

そのようなものを保存するさまざまな方法があります:

ローカル(同じドメインの場合)

アンロード前

これにより、必要に応じてアンロードイベントをキャンセルできます。ただし、ポップアップはオプションです。

アンロード

このイベントをキャンセルすることはできませんが、すべてのノードとJavaScript変数に完全にアクセスできます。したがって、キャンセルしたくない場合は、最終的なクリーンアップ/保存を行うことができます。document.cookieまたはなど、好きな保存方法を使用できますwindow.localStorage

window.onunload = function () {
    window.localstorage[myVideo.currentTime] = document.getElementById("myVid").currentTime;
}

ユーザーがサイトに戻ったときにのみCookieとlocalStorageを処理できるという事実を処理できる場合。このアプローチは完璧だと思います。現在の時刻を保存するだけで、次回のユーザーの訪問時に更新された情報を取得できます。

バックエンドで

その情報をバックエンドに本当に保存する必要がある場合は、他のことを試すことができます。

DBポーリング

精度のニーズに応じて、10〜20秒ごとにajaxリクエストを送信して、再生時間を更新できます。ビデオIDと現在の時刻を含めるだけの場合、リクエストは非常に小さいため、パフォーマンスに影響を与えることはありません。ただし、ドメインCookieが多数ある場合は、リクエストのサイズが大幅に増加し、500バイトのペイロードに5kBのヘッダーが含まれる可能性があることに注意してください。

于 2012-07-26T11:34:59.533 に答える