1

私はSessionを多用するウェブサイトに取り組んでいます。このウェブサイトをからに移行する予定framework 2.0ですframework 4.0。HTML5の使用も計画しています。アプリケーションを再設計しているため、セッションの使用量を可能な限り削減することも試みています。

HTML5の機能の1つは、オフラインストレージです。セッションデータを保存するための代替の場所として使用できますか?HTML5オフラインストレージはAsp.Netセッションの代わりになりますか?

4

4 に答える 4

3

セッションデータはサーバーに保存され、HTML5オフラインストレージはブラウザに保存されます。ブラウザにセッションデータを保存することに慣れている場合は、それが機能することを確認してください。ただし、サーバーに残しておく必要のある機密情報がある場合は、それをセッションに保持します。

于 2012-08-07T15:35:35.033 に答える
2

それは確かに、セッションが現在使用されているもののいくつかの代替として使用することができます。

また、セッションのスケーラビリティに大きな影響を与えることはないので、できる限り使用する必要があると思います。

とはいえ、セッションを使用した後、セッションを使用した場合のスケーラビリティへの影響は、セッションを使用する場合と使用しない場合の違いに比べて小さいため、セッションを完全に排除できない場合は、セッションが得られない可能性があります。あなたはそんなに。

ただし、クライアントの状態を保存する場合は、はるかに賢明なソリューションです(クライアントの状態はクライアント上にあり、ほとんど冗長に聞こえますが、非常に賢明なアイデアです)。したがって、それだけでも、可能な場合は実行する価値があります。

于 2012-08-07T15:41:12.047 に答える
1

新しいHTML5APIを使用する場合、ユーザーが現在使用しているブラウザでサポートされているかどうかに注意してください。Modernizerのようなライブラリを使用して、機能の検出を行うことができます。

Aspnetセッションとローカルストレージは同等ではありません。それが目標である場合は、ローカルストレージを使用して状態を維持できます。

以前、私はローカルストレージの代わりにデータを保存するCookieベースの方法を採用しました(とにかくCookieを使用してすべてのブラウザを安全にターゲットにするため)。多分それは助けることができます。以下のコードにはJSON2が必要であることに注意してください。

var Util = (function () {
    return {
        // Wrapper module for getting and setting cookies
        CookieManager: {
            set: function (name, value, days) {
                if (days) {
                    var date = new Date();
                    date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
                    var expires = "; expires=" + date.toGMTString();
                }
                else var expires = "";
                document.cookie = name + "=" + value + expires + "; path=/";
            },
            get: function (name) {
                var nameEQ = name + "=";
                var ca = document.cookie.split(';');
                for (var i = 0; i < ca.length; i++) {
                    var c = ca[i];
                    while (c.charAt(0) == ' ') c = c.substring(1, c.length);
                    if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
                }
                return null;
            },
            erase: function (name) {
                this.set(name, "", -1);
            }
        }
    }
})();

var UserPrefs = (function () {
    var cookieName = 'UsrPrf';
    var data = {};
    return {
        set: function (propName, value) {
            if (data == null) data = {};
            data[propName] = value;
        },
        get: function (propName, defaultValue) {
            if (data == null) {
                data = {};
                return defaultValue;
            } else {
                return data[propName] == undefined ? defaultValue : data[propName];
            }
        },
        load: function () {
            try {
                data = JSON.parse(Util.CookieManager.get(cookieName));
            } catch (e) {
                data = {};
            }
            return data;
        },
        save: function (ttl) {
            if (!ttl) ttl = 30;
            Util.CookieManager.set(cookieName, JSON.stringify(data), ttl);
        }
    };
})();
于 2012-08-07T15:47:08.330 に答える
1

はい、sessionStorage / localStorageなどのhtml5ストレージオブジェクトに値を保存できます。詳細については、Html5StorageDocにアクセスしてください。これを使用すると、中間値を一時的/永続的にローカルに保存し、セッションの値を保存するために値にアクセスできます。

sessionStorage.getItem('label')
sessionStorage.setItem('value', 'label')

またはを使用して値を永続的に保存します

localStorage.getItem('label')
localStorage.setItem('value', 'label')

したがって、保存する必要のあるセッションデータはすべて、html5が提供するsessionStorageを使用できます。

于 2012-08-07T15:38:23.037 に答える