Skip to content
Deependra Vishwakarma

2024 · CMS migration and modernization · Exhibit Magazine India Pvt. Ltd. · Lead engineer

TopGear India CMS

A magazine CMS moved from CodeIgniter on shared hosting to Laravel on Google Cloud: page loads from 1–3 min → 3 s.

I rebuilt a motoring magazine's content management system, moving it from CodeIgniter on shared hosting to Laravel on Google Cloud with Redis caching and an edge CDN, without interrupting daily publishing.

1–3 min → 3 s

page load time, before → after

How this is measured

Load time of the home page and the article category pages before and after the rebuild (new stack, optimized SQL queries and indexes, Google Cloud, properly sized images).

70% → 30%

bounce rate, before → after

How this is measured

Bounce rate in Google Analytics before and after the rebuild.

Screenshot of TopGear India CMS
The live product at https://www.topgearmag.in.

The constraint

A busy editorial site: daily stories, galleries and reviews, traffic spikes whenever a car launches, and editors who can't stop publishing for a migration.

The legacy CodeIgniter code on shared hosting was slowest exactly when it mattered, during traffic spikes. The modernization had to happen while the newsroom kept publishing every day.

The architecture

  • A full rewrite to Laravel, keeping the content model and URLs the editors and search engines already knew.
  • Google Cloud instead of shared hosting, with infrastructure that could be scaled and monitored.
  • Redis caching and an edge CDN in front of the application, so most page views never touch the database.
  • An editor-first CMS, rebuilt around the newsroom's real publishing workflow.
  • Queries and indexes fixed at the source. The slow pages came from slow SQL; the queries were rewritten and the tables indexed for how the site actually reads them.
  • Images sized for the page. Every image is served at the size it is shown, instead of full-size originals.
Architecture of TopGear India CMSReaders are served from an edge CDN and Redis cache in front of the Laravel application on Google Cloud, which stores content in MySQL; editors publish through the rebuilt CMS.page viewscache misscached pageson a misspublishstoriesReadersEditorsEdge CDNLaravel appon Google CloudEditor-first CMSLaravel and Vue.jsRedispage cacheMySQLsame content model
the hot path asynchronous
The diagram as text

Readers are served from an edge CDN and Redis cache in front of the Laravel application on Google Cloud, which stores content in MySQL; editors publish through the rebuilt CMS.

  • Readers → Edge CDN: page views
  • Edge CDN → Laravel app: cache miss
  • Laravel app → Redis: cached pages
  • Laravel app → MySQL: on a miss
  • Editors → Editor-first CMS: publish
  • Editor-first CMS → MySQL: stories

Trade-offs

  • A full rewrite instead of incremental patches: more work up front, but patching the old stack had stopped paying off.
  • Caching aggressively means planning invalidation carefully, so published changes appear promptly without purging everything.
  • Keeping every URL stable limited some structural changes, and protected years of search traffic.

Results

  • Page load time on the home and category pages fell from 1–3 min → 3 s.
  • Bounce rate fell from 70% → 30%, and traffic grew.
  • Publishing moved from hours to minutes for the editorial team.
  • The site now runs on cloud infrastructure that can be scaled and monitored.

What I'd do again

  • When the platform is the problem, a clean migration is cheaper than endless patches.
  • The big gains came from architecture (cloud, caching, CDN), not from micro-optimizing code.
  • Editors are users too. The CMS was only a success once publishing became easier as well as faster.

Need something like this?

A short brief is enough to start. I’ll reply with questions, a suggested first step and when I could begin.