2

今日遭遇したこの問題があります。私はウェブサイト用のミニカートを作成しています。実際のカートを除くすべてのページに表示されます。

サイトでのパフォーマンスは重要なので、カート内の現在のアイテムを一時的にローカル ストレージにキャッシュして、ページが読み込まれるたびに同じアイテムをフェッチするというサーバー側の不要なリクエストを回避することにしました。

ミニ カートは実際にはカートに表示されないため、アイテムを削除するときなど、コールバックをリッスンします。ポイントは、キャッシュをリセットするか、キャッシュされたコピーからそのアイテムだけを削除することです。


私が直面している問題:

ユーザーはカートページに行き着き、リンクをクリックして他のページに移動するとキャッシュがクリアされる可能性があります(ユーザーが最後のステップにいる場合)。キャッシュはクリアされます。

問題は、戻るボタン (ブラウザの戻るボタン、マウスの戻るボタンなど) を使用すると、ユーザーが前のページに戻り、カート ページで行った変更 (キャッシュのクリア) が元に戻されることです。(ページをリロードしても)

質問は次のとおりです。

ローカル ストレージをクリアし、戻ったときに復元されないようにするにはどうすればよいですか? 同時に、他のブラウザでも一貫した動作をします。


これcacheは単なるアイテムですが、新しいアイテムが追加または削除されると更新されます。キャッシュをクリアすると、単純に削除されます (localStorage.removeItem を使用)。

4

1 に答える 1

1

IE8 でこれを試したときにアイテムが削除された場合、アイテムを削除するための正しいコードを実行していると言えます。これはブラウザ関連の問題のように見えます。一貫したユーザー エクスペリエンスを維持するために、戻ったときにブラウザが情報を保持しているのです。これは、同じリンクに直接移動しても削除されたオブジェクトが復元されないという事実によってサポートされているようです。

ショッピング カートをいっぱいにするようなプロセスを実行している場合、キャッシュが正しく更新されるように、アクセスしたページのバック トレイルをいったん残す限り、これは問題にならない可能性があります。(つまり、キャッシュ内のアイテム 1 はページ B で削除され、ページ A に戻ると戻りますが、ページ D に移動すると消えます)。

もう 1 つのオプションは、サーバー側のセッション ストレージ メカニズムを使用することです。これは私がやりたいことです。プログラマー、特に SO で見られる最大の間違いの 1 つは、操作 X がパフォーマンスに影響を与えると想定し、それを回避しようとすることです。ベンチマークなしでは、パフォーマンスについて具体的な声明を出すことはできません。いくつかのセッション オブジェクトを返す際に、サーバー側がサイレント側のコードよりも高速になる可能性が非常に高くなります。サーバー側セッションは、ネット上の事実上すべてのサイトで使用される優れたツールですが、パフォーマンスへの影響について間違った仮定があるため、無視するのは残念です.

于 2012-12-17T12:28:14.093 に答える