0

100個の製品があるWebサイトがあるとします。次に、これはそれぞれ20の製品を含む5つのセクションにフィルターされます。20個の製品(おもちゃなど)が含まれているセクションの1つにいる場合、1ページに5個のおもちゃだけを表示するのに最適な方法は何でしょうか。リストの一番下には、次/前の5つのおもちゃのセットを表示するための次/前のボタンがあります。

より良い例えはグーグル検索でしょう。何百万もの結果がありますが、一度に表示されるのは約10個だけです。

だから今私はグーグルアプリエンジン(Python)とdjangoテンプレートを使用しています。この問題を解決するために私が考えた1つの方法は、すべてのクエリ結果をdivに入れ、それをjavascriptで変更して同様の効果を与えることです。ただし、誰かがブラウザの戻るボタンをクリックすると、元の場所に移動しません。

前もって感謝します。どんな助けでも役に立つでしょう...私はこのテクニックが何と呼ばれるかわからないので、グーグルは本当に役に立ちませんでした:(

編集:回答に基づいて、私の質問はここで解決されたことがわかりました:ページネーションにcursor()を使用する方法は?

4

2 に答える 2

1

クエリカーソルを調べます。Thayはシリアル化されてクライアントに送信され、「次の」および「前の」ページング要求の作成に使用されます。

offset:クエリには使用しないでください。これは、実際にはすべてのエンティティを位置までフェッチ(および課金)するoffset+limitため、非常にコストがかかる可能性がありますが、アプリケーションにのみlimit結果が返されます。

于 2012-04-21T07:17:30.257 に答える
0

大きな結果セットがある場合は、すべての結果を非表示のコンテンツとしてHTMLに配置し、JSを使用して操作することが非常に良いアイデアかどうかはわかりません(Googleがこのアプローチを使用した場合に何が起こったかを考えてください)。あなたが言及したバック機能の問題もあります。

したがって、必要な「結果ページ」を毎回クエリする場合は、GoogleのGQLリファレンスが役立つと思います。特に、LIMIT句を見てください。これを提供することで、探しているページングメカニズムを作成するのに役立ちます。 「カウント」として必要なページあたりのアイテム数と、以前は「オフセット」として表示されたアイテム数(最初の呼び出しでは0)。

表示に関しては、Google画像検索/ Facebookニュースフィードのアプローチも検討するのが面白いかもしれないと思います(ページングの代わりにスクロールでロードする)が、それはあなたの個人的な選択の問題です:)

これがお役に立てば幸いです。

編集:ピーターの答えを読んだ後、ページネーションにカーソルを使用する方がはるかに効率的であることがわかりました。彼の答えには良い参考資料があります。

于 2012-04-21T06:58:24.057 に答える