2012-04-21 10 views
0

私は100の製品を持つウェブサイトを持っていると言います。次に、これは、それぞれ20の製品を含む5つのセクションに絞り込まれます。 20個の商品(玩具など)を含むセクションの1つにいる場合、ページあたり5個の玩具を表示する最適な方法は何でしょうか。リストの一番下には、次の/前のボタンがあり、次の/前のセットの5個のおもちゃを表示します。次の/前のボタンをgqlクエリ結果間で切り替える方法

より良いアナロジーは、Google検索になります。数百万の結果がありますが、特定の時間には〜10しか表示されません。

だから、今、私はGoogleのアプリケーションエンジン(パイソン)とDjangoのテンプレートを使用しています。私がこの問題を解決するために考えた1つの方法は、すべてのクエリ結果をdivに入れて、javascriptで同様の効果を与えるように変更することでした。しかし、誰かが自分のブラウザの戻るボタンをクリックした場合、元々どこから来たのかわかりません。

ありがとうございます。有用であろう...私はGoogleが実際に有用ではなかったので、この技術が呼び出されるかわからないすべてのヘルプ:(

編集:応答に基づいて、私は私の質問はここで解決されたが見つかりました:How to use cursor() for pagination?

答えて

1

は、クエリcursorsに見て。 Thayは、 "次の"および "前の"ページング要求の作成に使用されるように、シリアル化されてクライアントに送信されます。

:クエリにはoffsetを使用しないでください。これは、actually fetches (and charges) all entities up to offset+limit positionのように非常に高価になる可能性がありますが、アプリケーションに返すのはlimitです。

0

私はあなたが大きな結果セットを持っている可能性がある場合は、HTMLの隠されたコンテンツとしてすべての結果を入れてJSを使用して、それを操作する(Googleはこのアプローチを使用した場合に何が起こったのかを考えて)非常に良いアイデアであることはよく分からない。ありますあなたが言及したにもバック機能の問題。だから、

、望んでいた「結果ページ」するたびに照会するためとして、私は考えてGoogleのGQL Referenceはあなたを助けてくれるかもしれません、特にLIMIT節を見てください。それはあなたが "count"としたいページの数と項目の数を供給することによってあなたが探しているページング機構を作るのを助けることができます-previously- "offset"(最初の呼び出しでは0)と見なされます。

表示するために、私はGoogle画像検索/ Facebookのニュースフィードのアプローチはまた、(代わりに、ページングのスクロールの負荷)を考えると面白いかもしれませんが、それはあなたの個人的な好みの問題だということ:)

希望だと思うとこれは、幸運を助ける!

EDIT:ペーターの答えを読んだ後、カーソルをページングに使用する方がずっと効率的であることが判明しました。

+0

ありがとうございます!私はgqlがオフセット句を持っていたのか分からなかった。あなたの答えに基づいて、私はGAEのpaging' '上のGoogle検索を行なったし、このサイトが見つかりました:https://developers.google.com/appengine/articles/paging – mrmo123

+0

Facebookのニュースフィードのアプローチに関しては、本当に面白いように思えますアイディア。再度、感謝します! – mrmo123

+0

この記事は古く、 'offset'と' limit'を使わないでください。パフォーマンスやコストに重大な影響を与える可能性があります。代わりにカーソルを使用します。 –

関連する問題