Zamin.uz is my news portal launched in 2014. In 2015, it won the honorable 2nd place in the Uzbekistan National Internet Competition. Today, my articles have been read more than 155 million times.
In this article, I cover the technical side of the project — which decisions worked over more than 10 years and which were mistakes.
Task
A news site differs from an ordinary site in three ways:
- Content volume constantly grows — if there are 200,000 pages today, there will be 210,000 tomorrow
- News speed is decisive — for Google Discover and "Top stories," articles must be indexed within minutes
- Multilingualism — one article is published in several languages, and the language versions must be correctly linked to each other
Multilingual Architecture
The site operates in several languages. The most common mistake here is placing hreflang tags differently in HTML and the sitemap. In such cases, Google ignores both.
The rule is simple: the set of hreflang tags in the HTML <head> must be character-for-character identical to the set in the sitemap. Include x-default as well.
A separate news sitemap is maintained for each language (news_latest_<language>.xml) — Google News expects this format.
Archive Indexing: The Biggest Mistake Is Here
When migrating a news site, people usually put "the last 1,000 articles" in the sitemap. As a result, a 10-year archive remains invisible to Google, and organic traffic drops sharply.
The correct solution is to index the entire archive via a sitemap index:
- Up to 40,000 URLs per segment
- Segments are collected in a sitemap index file
- A separate short sitemap for news (the last 48 hours) — for Google News
At Zamin.uz, the sitemap currently contains more than 190,000 URLs, and all of them are open for indexing.
Speed: Caching Strategy
Caching is a tricky issue for a news site: on one hand, you need to manage load, and on the other, new content must appear immediately.
The solution that worked:
- Short cache for HTML — 3–10 minutes, not one hour. Freshness is critical for Google Discover
- Long cache for static assets — 30 days,
immutable, with a version in the URL - When a new article is published, only the affected URLs are purged from the cache
The last point is important: purging the entire zone (purge_everything) places a large load on the origin at once — this is a "cache stampede." Purge only the changed URLs.
Images
On a news site, an image is half of the traffic. At Zamin.uz, all images are served through a single sizing endpoint (in /uploads/mini/WxH/... format) and converted to WebP.
An important detail: do not rely on the framework's own image optimizers (for example, Next.js /_next/image) — a CDN or Apache layer may unexpectedly return 403. Your own path is more reliable.
Telegram Integration
Every new article is automatically sent to the Telegram channel. This provides two things: additional traffic and faster distribution of the article.
What Went Wrong
Not deleting the old sitemap during migration. If the old sitemap remains in Search Console, Google keeps requesting old URLs, and the crawl budget is wasted.
Redirecting missing pages to the homepage. This is considered a "soft 404" and is penalized. The correct approach: use 307 if the content exists in another language, fall back to search if it is an old tag, and return a proper 404 or 410 if it does not exist at all.
Not updating dateModified when content is updated. This is especially costly in the AI search era — a page not updated for more than 6 months loses citation rights.
Conclusion
A news site requires constant technical discipline. You cannot build it correctly once and leave it: the archive grows, Google requirements change, and caching policy must be revisited.
The three things that had the biggest impact: full archive indexing, short HTML caching, and consistent hreflang.