惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

月光博客
月光博客
人人都是产品经理
人人都是产品经理
C
Check Point Blog
大猫的无限游戏
大猫的无限游戏
小众软件
小众软件
Threat Intelligence Blog | Flashpoint
Threat Intelligence Blog | Flashpoint
博客园 - 聂微东
Help Net Security
Help Net Security
cs.AI updates on arXiv.org
cs.AI updates on arXiv.org
L
LINUX DO - 最新话题
Cloudbric
Cloudbric
博客园 - Franky
阮一峰的网络日志
阮一峰的网络日志
O
OpenAI News
V2EX - 技术
V2EX - 技术
H
Hacker News: Front Page
Hacker News: Ask HN
Hacker News: Ask HN
Google DeepMind News
Google DeepMind News
PCI Perspectives
PCI Perspectives
爱范儿
爱范儿
Hacker News - Newest:
Hacker News - Newest: "LLM"
Martin Fowler
Martin Fowler
S
Schneier on Security
Webroot Blog
Webroot Blog
Know Your Adversary
Know Your Adversary
云风的 BLOG
云风的 BLOG
H
Help Net Security
I
InfoQ
Simon Willison's Weblog
Simon Willison's Weblog
雷峰网
雷峰网
J
Java Code Geeks
V
Visual Studio Blog
MyScale Blog
MyScale Blog
C
CXSECURITY Database RSS Feed - CXSecurity.com
C
CERT Recently Published Vulnerability Notes
Google Online Security Blog
Google Online Security Blog
Spread Privacy
Spread Privacy
有赞技术团队
有赞技术团队
The GitHub Blog
The GitHub Blog
Engineering at Meta
Engineering at Meta
V
V2EX
Apple Machine Learning Research
Apple Machine Learning Research
www.infosecurity-magazine.com
www.infosecurity-magazine.com
A
About on SuperTechFans
S
SegmentFault 最新的问题
H
Hackread – Cybersecurity News, Data Breaches, AI and More
TaoSecurity Blog
TaoSecurity Blog
WordPress大学
WordPress大学
S
Securelist
P
Proofpoint News Feed

Stuff & Nonsense Blog feed

The camera that took me places - Stuff & Nonsense Last week in the studio (CW27-26) - Stuff & Nonsense Last week in the studio (CW26-26) - Stuff & Nonsense Last week in the studio (CW25-26) - Stuff & Nonsense Eleventy in a Box. A premium Eleventy start kit - Stuff & Nonsense Migrating from Statamic to Eleventy. This site’s had major surgery - Stuff & Nonsense Last week in the studio (CW24-26) - Stuff & Nonsense Last week in the studio (CW21-26) - Stuff & Nonsense Last week in the studio (CW20-26) - Stuff & Nonsense Last week in the studio (CW19-26) - Stuff & Nonsense Websites shouldn’t need maintenance. They need momentum. - Stuff & Nonsense Making my view options toolbar more intuitive - Stuff & Nonsense Unfinished Business #142: The perfect request for proposal - Stuff & Nonsense Last week in the studio (CW18-26) - Stuff & Nonsense Militant masthead logo (r)evolution - Stuff & Nonsense Eleventy in a Box just add water - Stuff & Nonsense Last week in the studio (CW17-26) - Stuff & Nonsense I added a spring mode to my animated SVG landscape - Stuff & Nonsense Last week in the studio (CW16-26) - Stuff & Nonsense Far Right So Wrong; Stop Reform t-shirts are back in my shop - Stuff & Nonsense Last week in the studio (CW15-26) - Stuff & Nonsense I got tired of correcting machines, so I gave them five rules - Stuff & Nonsense How I designed an information-rich website for The Shared Homeland Paradigm - Stuff & Nonsense A bold new website for the Academy of Scoring Arts - Stuff & Nonsense
Tracking down a nasty Netlify bandwidth burner - Stuff & Nonsense
Andy Clarke, Stuff & Nonsense Ltd. · 2026-06-26 · via Stuff & Nonsense Blog feed

Most days, my website sits there quietly, publishing writing, showing off my work, selling a few products, and generally behaving itself. But today, I got an email from Netlify telling me that, although my migrated website was only days old, I had already burned through 50% of my allocated monthly bandwidth.

From June 24, 2026, to June 25, my site had served 43,916 requests and used 5.4GB of bandwidth. That’s not “the internet’s melted” territory, but for a static website, it was enough to make me spit out my coffee. My site isn’t YouTube. It isn’t serving huge videos, large downloads, or anything that should be quietly shovelling gigabytes out the door overnight. So, I went digging.

Finding the culprit in Netlify Observability

Netlify Observability made the first part surprisingly straightforward. I looked at which paths used the most bandwidth, not just the most requests. That distinction matters. A page can be requested thousands of times and still be cheap if it’s small. Another URL can be requested far fewer times and still be expensive if every response is enormous.

The obvious offender was: /blog/feed

Over that 24-hour period, my blog feed used 2.34GB of bandwidth across about 2,700 requests. That’s a lot of bandwidth for what should be a small XML file.

The request count wasn’t especially shocking. Feeds get hit by RSS readers, search tools, bots, and all sorts of things that aren’t people sitting in front of browsers. But the bandwidth was the problem. Each request was carrying far more weight than it needed to.

Filtering by user agent category confirmed my suspicion. Most of the traffic wasn’t coming from ordinary browsers. It was crawlers, tools, and other automated clients. In other words, the feed wasn’t mainly being read by humans. It was being fetched repeatedly by machines.

That’s fine. Feeds are for machines as much as people. But that doesn’t mean they need to be massive.

What was wrong with the feed

My problem was self-inflicted: when I rebuilt the website recently, I thought it might be nice for people to read the full post in their RSS reader, not just an excerpt. That was burning through my bandwidth at an alarming rate, so I‘ve switched back to displaying summaries only. Before the fix, the feed weighed:

  • 4,499,753 bytes raw
  • 1,317,045 bytes gzipped

That’s about 1.3MB transferred for a single compressed feed request. One request like that isn’t much. Two thousand seven hundred requests are.

This is where my new static website caught me out. Because everything is prebuilt, it’s easy to assume everything is cheap. But a static file can still be expensive if it’s large and popular with bots.

What I changed

I changed the feed to use summaries instead of full post bodies. I also limited it to the latest 25 entries. That gives RSS readers, crawlers, and other tools enough information to understand what’s new without forcing them to download half my website every time they ask for the feed. After the change, the feed dropped to:

  • 24,777 bytes raw
  • 3,898 bytes gzipped

The raw feed went from about 4.5MB to about 25KB. The gzipped version went from about 1.3MB to under 4KB.

While I was there, I also looked at the search index. That wasn’t the main source of the bandwidth spike, but I had similar suspicions. It included larger text blobs than necessary. Before the change, the search index was:

  • 4,182,622 bytes raw
  • 1,126,871 bytes gzipped

I changed it to use shorter excerpts instead of bigger chunks of post content. After that, it became:

  • 2,187,393 bytes raw
  • 460,052 bytes gzipped

Still not tiny, but much better. More importantly, it’s now closer to what the feature actually needs.

Lessons learned

This was a useful reminder that small architectural decisions hang around. A feed template can become expensive when the archive has almost 20 years of content. A search index that seemed harmless quietly became heavier with every post. A few things I’ll keep in mind from now on:

  • Bandwidth problems aren’t always caused by images, videos, or downloads.
  • Static files still need watching when they grow over time.
  • Feeds should include enough to be useful, not everything you’ve ever published.
  • Automated traffic is normal, but it magnifies waste.
  • Observability is only useful if you actually look at it.

The most useful part of this exercise wasn’t the fix itself but learning how to follow the trail from “that seems high” to a specific URL, a specific template, and a specific decision. Fingers crossed, I won’t be getting any more emails from Netlify any time soon.


June 26, 2026 • Andy Clarke • performance

You might also like