Datasette 停止向 Firefox 发送 next 预取头
Datasette 作者 Simon Willison 发现 Firefox 会依据页面返回的 link rel=next HTTP 头自动预取下一页数据,导致绝大多数不点击下一页的访客也触发无谓的页面渲染与带宽消耗。他因此修改 Datasette,不再向 Firefox 的 HTML 页面发送该响应头。该问题在 Mozilla 缺陷库中已存在 24 年,作者本人 2002 年的相关博文也早已被遗忘。
报道正文
I was looking at the Firefox network panel today when I noticed that requests to a Datasette table page were triggering an HTTP prefetch to the next page of rows in that table.
This was happening because Datasette pages serve an HTTP link header like this:
link: <https://latest.datasette.io/fixtures/compound_three_primary_keys?_next=a%2Cd%2Cv>; rel="next"
This is bad. A tiny fraction of the visitors to one of those pages will click the "next" link, which means for everyone else their browser is fetching unnecessary data and the Datasette server is having to render an entire page that then gets thrown away.
I dug in and learned that Firefox has an issue that has been open for 24 years about this behavior...
And one of the early comments on that issue links to my blog post from 2002 complaining about this feature. I hadn't just forgotten that I had written about it, I had forgotten the feature entirely!