# pagination

Published articles for pagination.

This is one page of public article previews, not the complete archive. Follow Next page to continue. Summaries are not the original full articles.

## 【kube-apiserver】List、Pagination 与一致性 List：continue token 与 etcd Range 成本

DevFeed: [【kube-apiserver】List、Pagination 与一致性 List：continue token 与 etcd Range 成本](<https://devfeed.tech/articles/kube-apiserver-list-pagination-list-continue-token-etcd-range-33962.md>)

Original publisher: [Read original article](<https://quant67.com/post/apiserver/06-list-pagination/06-list-pagination.html>)

Author: Liao Tonglang

Published: 2026-08-28T00:00:00Z

Content type: tutorial

Language: zh

Sources: [土法炼钢 - 系统与基础设施](<https://devfeed.tech/sources/source-4.md>)

Topics: [Kubernetes](<https://devfeed.tech/topics/kubernetes.md>), [API](<https://devfeed.tech/topics/api.md>), [Cache](<https://devfeed.tech/topics/cache.md>), [version](<https://devfeed.tech/topics/version.md>)

Tags: [410-gone](<https://devfeed.tech/tags/410-gone.md>), [apiserver](<https://devfeed.tech/tags/apiserver.md>), [cacher](<https://devfeed.tech/tags/cacher.md>), [continue-token](<https://devfeed.tech/tags/continue-token.md>), [distributed](<https://devfeed.tech/tags/distributed.md>), [etcd](<https://devfeed.tech/tags/etcd.md>), [etcd-range](<https://devfeed.tech/tags/etcd-range.md>), [http](<https://devfeed.tech/tags/http.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [limit](<https://devfeed.tech/tags/limit.md>), [list](<https://devfeed.tech/tags/list.md>), [pagination](<https://devfeed.tech/tags/pagination.md>), [range](<https://devfeed.tech/tags/range.md>), [resourceversion](<https://devfeed.tech/tags/resourceversion.md>), [v1-30-3](<https://devfeed.tech/tags/v1-30-3.md>)

### AI overview

This article examines Kubernetes v1.30.3 List pagination in kube-apiserver, explaining continue-token semantics, limit-and-continue etcd Range behavior, resourceVersion consistency, and the different costs of cacher and etcd3 paths. It also explains how label and field selectors affect scanning and filtering.

### Source excerpt

钉 Kubernetes v1.30.3 List 分页的 continue token 编码语义、limit+continue 多轮 etcd Range 行为、resourceVersion 对一致性语义的影响，以及 label/field selector 在 cacher 与 etcd3 路径上的不同成本。

## kube-apiserver / Kubernetes 控制面内核：storage、cacher、Admission 与 APF

DevFeed: [kube-apiserver / Kubernetes 控制面内核：storage、cacher、Admission 与 APF](<https://devfeed.tech/articles/kube-apiserver-kubernetes-storage-cacher-admission-apf-33974.md>)

Original publisher: [Read original article](<https://quant67.com/post/apiserver/index.html>)

Author: Liao Tonglang

Published: 2026-08-28T00:00:00Z

Content type: article

Language: zh

Sources: [土法炼钢 - 系统与基础设施](<https://devfeed.tech/sources/source-4.md>)

Topics: [Kubernetes](<https://devfeed.tech/topics/kubernetes.md>), [etcd](<https://devfeed.tech/topics/etcd.md>), [Caching](<https://devfeed.tech/topics/caching.md>), [API](<https://devfeed.tech/topics/api.md>), [site-reliability-engineering](<https://devfeed.tech/topics/site-reliability-engineering.md>), [Authentication](<https://devfeed.tech/topics/authentication.md>), [Authorization](<https://devfeed.tech/topics/authorization.md>), [rbac](<https://devfeed.tech/topics/rbac.md>)

Tags: [admission](<https://devfeed.tech/tags/admission.md>), [apf](<https://devfeed.tech/tags/apf.md>), [apiserver](<https://devfeed.tech/tags/apiserver.md>), [authentication](<https://devfeed.tech/tags/authentication.md>), [authorization](<https://devfeed.tech/tags/authorization.md>), [cacher](<https://devfeed.tech/tags/cacher.md>), [control-plane](<https://devfeed.tech/tags/control-plane.md>), [distributed](<https://devfeed.tech/tags/distributed.md>), [etcd](<https://devfeed.tech/tags/etcd.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [oidc](<https://devfeed.tech/tags/oidc.md>), [pagination](<https://devfeed.tech/tags/pagination.md>), [plan](<https://devfeed.tech/tags/plan.md>), [rbac](<https://devfeed.tech/tags/rbac.md>), [resourceversion](<https://devfeed.tech/tags/resourceversion.md>), [storage](<https://devfeed.tech/tags/storage.md>), [v1-30-3](<https://devfeed.tech/tags/v1-30-3.md>), [watch](<https://devfeed.tech/tags/watch.md>), [watch-cache](<https://devfeed.tech/tags/watch-cache.md>), [webhook](<https://devfeed.tech/tags/webhook.md>)

### AI overview

This article introduces a 16-part series on the kube-apiserver production request path, covering storage.Interface and etcd3, resourceVersion, watch cache behavior, List and Watch operations, Admission and Webhooks, authentication, authorization, auditing, APF, and extension boundaries. It explains how to distinguish failures across these layers and when to investigate kube-apiserver instead of directly querying etcd. The discussion is anchored to Kubernetes v1.30.3 and etcd v3.5.33, with experiments explicitly noted as not yet run.

### Source excerpt

补齐 etcd 系列 K8s 耦合篇之上的 kube-apiserver 生产内核：storage.Interface、watch cache、resourceVersion、Admission/Webhook、APF，并以排障与相对 etcd 的分层收束。

## 【kube-apiserver】resourceVersion 与 Revision 映射：mod revision、continue 与一致性读期望

DevFeed: [【kube-apiserver】resourceVersion 与 Revision 映射：mod revision、continue 与一致性读期望](<https://devfeed.tech/articles/kube-apiserver-resourceversion-revision-mod-revision-continue-33960.md>)

Original publisher: [Read original article](<https://quant67.com/post/apiserver/04-resource-version/04-resource-version.html>)

Author: Liao Tonglang

Published: 2026-08-28T00:00:00Z

Content type: tutorial

Language: zh

Sources: [土法炼钢 - 系统与基础设施](<https://devfeed.tech/sources/source-4.md>)

Topics: [Kubernetes](<https://devfeed.tech/topics/kubernetes.md>), [API](<https://devfeed.tech/topics/api.md>), [Caching](<https://devfeed.tech/topics/caching.md>)

Tags: [410-gone](<https://devfeed.tech/tags/410-gone.md>), [api](<https://devfeed.tech/tags/api.md>), [apiserver](<https://devfeed.tech/tags/apiserver.md>), [cache](<https://devfeed.tech/tags/cache.md>), [consistency](<https://devfeed.tech/tags/consistency.md>), [continue-token](<https://devfeed.tech/tags/continue-token.md>), [distributed](<https://devfeed.tech/tags/distributed.md>), [etcd](<https://devfeed.tech/tags/etcd.md>), [kubernetes](<https://devfeed.tech/tags/kubernetes.md>), [pagination](<https://devfeed.tech/tags/pagination.md>), [resourceversion](<https://devfeed.tech/tags/resourceversion.md>), [revision](<https://devfeed.tech/tags/revision.md>), [v1-30-3](<https://devfeed.tech/tags/v1-30-3.md>), [watch](<https://devfeed.tech/tags/watch.md>)

### AI overview

This article explains how Kubernetes resourceVersion maps to etcd mod_revision, including the different semantics for individual objects and List responses. It covers Watch starting points, continue-token pagination and its costs, compaction-related 410 Gone errors, and consistency differences between watch-cache and etcd read paths. The discussion is anchored to Kubernetes v1.30.3 and etcd v3.5.33.

### Source excerpt

钉 Kubernetes resourceVersion 字段与 etcd mod revision 的对应关系；分析 continue token 的分页语义与成本；说明不同 List 路径的一致性期望差异；以及 410 Gone 与 ErrCompacted 的分列。版本锚定 Kubernetes v1.30.3 / etcd v3.5.33。

## Pagination at Scale: Why OFFSET and SKIP Will Eventually Break Your API

DevFeed: [Pagination at Scale: Why OFFSET and SKIP Will Eventually Break Your API](<https://devfeed.tech/articles/pagination-at-scale-why-offset-and-skip-will-eventually-break-your-api-39566.md>)

Original publisher: [Read original article](<https://ankit-rana.com/logs/14-pagination-offset-vs-cursor/>)

Author: hello@ankit-rana.com

Published: 2026-03-17T00:00:00Z

Content type: tutorial

Language: en

Sources: [Ankit Rana | Mechanical Sympathy](<https://devfeed.tech/sources/ankit-rana-mechanical-sympathy.md>)

Topics: [API](<https://devfeed.tech/topics/api.md>), [Database](<https://devfeed.tech/topics/database.md>), [MongoDB](<https://devfeed.tech/topics/mongodb.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [api-design](<https://devfeed.tech/tags/api-design.md>), [b-tree](<https://devfeed.tech/tags/b-tree.md>), [cursor](<https://devfeed.tech/tags/cursor.md>), [database-performance](<https://devfeed.tech/tags/database-performance.md>), [latency](<https://devfeed.tech/tags/latency.md>), [mongodb](<https://devfeed.tech/tags/mongodb.md>), [pagination](<https://devfeed.tech/tags/pagination.md>), [scalability](<https://devfeed.tech/tags/scalability.md>), [scale](<https://devfeed.tech/tags/scale.md>), [sql](<https://devfeed.tech/tags/sql.md>)

### AI overview

This article explains why OFFSET and SKIP pagination become slower and more memory-intensive as page depth increases. It presents cursor-based, or keyset, pagination as an alternative that uses an indexed range seek and reads a fixed number of rows, keeping fetch cost largely constant with list depth. The trade-off is that cursor pagination does not provide reliable absolute page numbers.

### Source excerpt

OFFSET does not seek. The engine fetches offset plus limit rows, sorts them, and discards the first N, so cost grows linearly with page depth. Cursor pagination passes the last seen key instead of a page number, letting the B+ tree seek in logarithmic time and read a fixed number of rows, which keeps latency flat at any depth. The price is losing absolute page numbers.

## Year in Review: 2024

DevFeed: [Year in Review: 2024](<https://devfeed.tech/articles/year-in-review-2024-37585.md>)

Original publisher: [Read original article](<https://www.taniarascia.com/2024-into-2025/>)

Author: hello@taniarascia.com

Published: 2025-03-27T00:00:00Z

Content type: article

Language: en

Sources: [Tania Rascia](<https://devfeed.tech/sources/tania-rascia.md>)

Topics: [coding](<https://devfeed.tech/topics/coding.md>), [CSS](<https://devfeed.tech/topics/css.md>), [React](<https://devfeed.tech/topics/react.md>), [Web Development](<https://devfeed.tech/topics/web-development.md>), [Web platform](<https://devfeed.tech/topics/web-platform.md>)

Tags: [bluesky](<https://devfeed.tech/tags/bluesky.md>), [burnout](<https://devfeed.tech/tags/burnout.md>), [career](<https://devfeed.tech/tags/career.md>), [coding](<https://devfeed.tech/tags/coding.md>), [css](<https://devfeed.tech/tags/css.md>), [hooks](<https://devfeed.tech/tags/hooks.md>), [keyboard](<https://devfeed.tech/tags/keyboard.md>), [meta](<https://devfeed.tech/tags/meta.md>), [pagination](<https://devfeed.tech/tags/pagination.md>), [projects](<https://devfeed.tech/tags/projects.md>), [react](<https://devfeed.tech/tags/react.md>), [redesign](<https://devfeed.tech/tags/redesign.md>), [review](<https://devfeed.tech/tags/review.md>), [side-projects](<https://devfeed.tech/tags/side-projects.md>), [sorting](<https://devfeed.tech/tags/sorting.md>), [table](<https://devfeed.tech/tags/table.md>), [variables](<https://devfeed.tech/tags/variables.md>), [year-in-review](<https://devfeed.tech/tags/year-in-review.md>)

### AI overview

A 2024 year-in-review from a principal engineer who continues to work primarily with React and CSS. The author reflects on balancing a full-time engineering role with coding, writing, side projects, and maintaining a personal website, while highlighting several articles and a blog redesign completed during the year.

### Source excerpt

I'm trying to win the award for "Latest Year in Review". 🏆 I don't know if anyone can challenge me at this point, as it's almost thirdway...

## Using the Temporal CLI

DevFeed: [Using the Temporal CLI](<https://devfeed.tech/articles/using-the-temporal-cli-36093.md>)

Original publisher: [Read original article](<https://temporal.io/blog/using-the-temporal-cli>)

Author: Loren Sands-Ramshaw

Published: 2023-04-27T04:00:00Z

Content type: tutorial

Language: en

Sources: [Temporal Blog](<https://devfeed.tech/sources/temporal-blog.md>)

Topics: [Command-line interface](<https://devfeed.tech/topics/cli.md>), [Development](<https://devfeed.tech/topics/development.md>), [Server](<https://devfeed.tech/topics/server.md>)

Tags: [aliases](<https://devfeed.tech/tags/aliases.md>), [auto-completion](<https://devfeed.tech/tags/auto-completion.md>), [bash](<https://devfeed.tech/tags/bash.md>), [cli](<https://devfeed.tech/tags/cli.md>), [command-line](<https://devfeed.tech/tags/command-line.md>), [commands](<https://devfeed.tech/tags/commands.md>), [development](<https://devfeed.tech/tags/development.md>), [docs](<https://devfeed.tech/tags/docs.md>), [download](<https://devfeed.tech/tags/download.md>), [environment](<https://devfeed.tech/tags/environment.md>), [how-to](<https://devfeed.tech/tags/how-to.md>), [json](<https://devfeed.tech/tags/json.md>), [pagination](<https://devfeed.tech/tags/pagination.md>), [server](<https://devfeed.tech/tags/server.md>), [temporal-concepts](<https://devfeed.tech/tags/temporal-concepts.md>)

### AI overview

A tutorial on using the Temporal CLI to install the tool, run and interact with a Temporal Server, configure environments and aliases, enable shell completion, and understand changes when upgrading from the previous CLI.

### Source excerpt

How to use the Temporal CLI to run a development version of the Temporal Server and interact with it.

## Challenge Accepted: Transposit

DevFeed: [Challenge Accepted: Transposit](<https://devfeed.tech/articles/challenge-accepted-transposit-35154.md>)

Original publisher: [Read original article](<https://blog.jessfraz.com/post/challenge-accepted-transposit/>)

Published: 2019-04-23T07:09:26Z

Content type: tutorial

Language: en

Sources: [Jessie Frazelle](<https://devfeed.tech/sources/jessie-frazelle.md>)

Topics: [API](<https://devfeed.tech/topics/api.md>), [Code](<https://devfeed.tech/topics/code.md>), [GitHub](<https://devfeed.tech/topics/github.md>), [SQL](<https://devfeed.tech/topics/sql.md>), [Bot](<https://devfeed.tech/topics/bot.md>)

Tags: [api](<https://devfeed.tech/tags/api.md>), [bots](<https://devfeed.tech/tags/bots.md>), [code](<https://devfeed.tech/tags/code.md>), [github](<https://devfeed.tech/tags/github.md>), [graphql](<https://devfeed.tech/tags/graphql.md>), [join](<https://devfeed.tech/tags/join.md>), [pagination](<https://devfeed.tech/tags/pagination.md>), [query](<https://devfeed.tech/tags/query.md>), [sql](<https://devfeed.tech/tags/sql.md>)

### AI overview

The author describes testing Transposit's SQL interface for combining multiple APIs, using a GitHub bot that syncs issues and pull requests to Airtable as a complex example.

### Source excerpt

Last week, I had the pleasure of meeting with the Transposit team in San Francisco. Tech is a super small world and it turns out the two founders and I are separated by one-degree through several different people we know. In meeting them I closed many loops without even realizing it, but I digress... Their product is really cool, it exposes a SQL interface for interacting with numerous APIs at once. For someone like myself who deploys a lot of bots, this is great. Usually when I have a complex bot I end up writing a lot of "glue code" to combine a few different APIs and get the information I want. Most of my bots have some sort of pagination logic and all have the N+1 problem where I don't really optimize my queries or use anything fancy like graphQL. Many APIs don't even have graphQL interfaces but also I am old school and I don't really want to learn something new. This is why I was super intrigued by Transposit's SQL interface, because hey, I know SQL! Adam, the CEO, challenged me to try it out, give them feedback, and see if I could break it with something complex. I am not one to back down from a challenge and I have some super weird ass bots, so I decided to start with the weirdest. Gitable Gitable is a bot I made for sending all my open issues and PRs on GitHub to a table in Airtable. I fucking love Airtable. It's design just feels right and works the way my brain works. I set out to make this bot work in Transposit because I know it has some super weird loops and has the N+1 problem where I loop over all my repos, then make another API call after. To reiterate, the goal of the bot is to iterate through all my repos on GitHub and sync the list of issue and PRs with a table in Airtable. Query all the user's repos First, I need to get all my repos that are not forks. So I need a SQL query for this, in Transposit it looks like this: SELECT name, full_name FROM github.list_repos_for_user WHERE username=@owner AND type='owner' AND fork=false The github.list_repos_fo

## Custom Jekyll pagination

DevFeed: [Custom Jekyll pagination](<https://devfeed.tech/articles/custom-jekyll-pagination-37260.md>)

Original publisher: [Read original article](<https://muffinman.io/blog/custom-jekyll-pagination/>)

Author: Stanko

Published: 2016-02-22T00:00:00Z

Content type: tutorial

Language: en

Sources: [Stanko Tadić](<https://devfeed.tech/sources/stanko-tadic.md>)

Topics: [Jekyll](<https://devfeed.tech/topics/jekyll.md>), [Code](<https://devfeed.tech/topics/code.md>)

Tags: [code](<https://devfeed.tech/tags/code.md>), [custom](<https://devfeed.tech/tags/custom.md>), [gist](<https://devfeed.tech/tags/gist.md>), [jekyll](<https://devfeed.tech/tags/jekyll.md>), [pagination](<https://devfeed.tech/tags/pagination.md>)

### AI overview

This tutorial describes customizing Jekyll pagination to show at least five page links with the current page centered, plus first and last page links on larger screens while retaining Newer and Older links. It points readers to the implementation code and a screenshot.

### Source excerpt

Please note that I'm not using Jekyll anymore, so this post might be outdated. Jekyll comes with simple pagination which has only Newer and Older links. I wanted a little bit more, now pagination shows at least five pages, with current in the middle. On the larger screens there are also first and last page links. Newer and Older links are, of course, still there. Check the gist with the code. You can see it at the bottom of this website, or just check the screenshot below: