スキップしてメイン コンテンツに移動

ページング処理を改修

かねてから懸案だった、データのページング処理を改修する。

GAEのデータストアは、fetchするデータ数が最大1000までしかない。これは連続するエンティティをカウントするのに負荷がかかるため、1000以上できない仕様にしているためだ。もちろん、1000以上あってもエンティティの検索などは問題なく行える。「連続する1000以上のエンティティをまとめて取得できない」というだけだ。

だが、この制限のおかげで、ページングをする場合、表示するデータのオフセット値を指定して値を取り出す、というような手法がとれないことになる。limitも当然だが1000までしか扱えないからだ。そこで別の方法を考えないといけなくなる。

Googleのドキュメントで推奨しているのは、現在表示しているデータのキーを引数として送り、そのキーのデータから表示する個数を取得する、という方法だ。そして、次のページを表示するためのリンクなどでは、自ページ冒頭に表示されるデータのキーをクエリー文字などを使って渡し、そのキーを使ってデータを取得するようにしなさい、ということらしい。

で、libroではユーザー・ホームで自分の投稿した記事を一覧で見られるようにしているので、その投稿記事の表示に、このページング処理を本日導入してみた。とりあえずは問題なく動いている。ただ、実際にデータ数を1000以上追加して正しく取得できるか確認してみないといけないだろう。年末なので、とりあえず細かいチェックは来年に持ち越し。

このブログの人気の投稿

ログインボタンの設置

各ページに、Google Friendのログインボタンを設置しました。とりあえず、どのページからでも、いちいちホームに移動せずにログインできるようにしました。ボタンの種類や設置場所などは、もう少しいろいろ変わるかも知れません。

Webデザインが変わりました

libroのサイトのデザインを大幅に変更しました。

以前から、「PCサイトとモバイルサイトを別々のページに」という形をなんとかせねば、と思っていたのですが、ようやくBootstrapベースでレスポンシブデザインのスタイルに変更しました。これで、同じページでPCからモバイルまで表示できるようになったと思います。

とりあえず、しばらくはこれで行こうと思います。なお、細かな調整は随時行なっていきます。

サイトの運用調整中

現在、libroサイトのサーバー運用設定を調整中です。

11月より、利用しているGoogle App Engineの料金体系が変更となり、これにあわせて運用の仕方を調整しているところです。新料金体系では、libroサイトはサーバーで起動されるインスタンス時間とデータベースアクセスAPIの利用回数の面で利用料金が増えてしまいそうです。

そこで、MemCacheによるキャッシュデータの生存時間とサーバーインスタンス起動までの遅延時間を細かに調整し、利用に支障ないレベルでリソース使用をどこまでしぼれるか調べているところです。

この関係で、しばらくはアクセス時のページ表示にかかる時間がときどき遅くなったりすることがあるかも知れません。ある程度目処がたてばこうしたことはなくなると思いますのでしばらくご協力くださいませ。