Blogs

The Evolution of the Web: From CGI to Edge Rendering

A 30-year tour of how the web went from CGI scripts and static HTML to edge-rendered apps — and what each shift taught us about scaling user experience.

Aug 12, 2025 5 min

The web rewrote itself five times in three decades. Each rewrite was a response to the same problem: how do we get the right pixels in front of the user, fast, at planetary scale?

If you started building for the web after 2018, the modern stack feels permanent: a framework, a CDN, an edge runtime, a managed database. It is not. The shape of the web changes every few years, and each shape solves a problem the previous shape could not.

From CGI to PHP: making the page personal

The first dynamic web ran on CGI scripts spawning a process per request. PHP and Perl arrived as the embedded alternative — interpret the page in-process, render a per-user view, save the operating system the cost of forking. This was the era when Wikipedia, WordPress, and most of e-commerce was born. Performance was acceptable because expectations were low.

The MVC era and the return of the framework

Rails 1.0 in 2005 changed how teams thought about web applications. Convention-over-configuration, ORM-backed models, and template-driven views became the default. Django, Laravel, and Spring MVC followed the same blueprint with different opinions. Most enterprises still run on this architecture.

The single-page app and the rise of JavaScript

Gmail and Google Maps proved JavaScript could do more than animate a dropdown. By the time React shipped in 2013 the SPA was the default for any product that wanted to feel like an application instead of a document. The trade-off was painful: huge JavaScript bundles, slow first paints, and SEO that fought you.

The pendulum swings: SSR returns

Server-side rendering came back through Next.js, Nuxt, and Remix. The new generation kept the SPA developer experience while sending pre-rendered HTML on first request. By 2024 Core Web Vitals were the default metric framework teams optimized for, and shipping less JavaScript had become a competitive advantage.

Edge: the current frontier

Today the question is no longer where the page renders — it is where the page renders per request. Cloudflare Workers, Vercel Edge, and Deno Deploy run server logic in 200+ regions. A user in Singapore hits a node in Singapore. The database may still be in us-east-1, but the rendering layer is wherever the user is.

What is next

The next shift is already visible: server components that hydrate selectively, partial prerendering, and the return of streaming. The architecture changes, but the goal has not moved since 1995 — fast pixels in front of the user.