Webshop: WITT International

Today we finished our port of a webshop implementation from PRADO to Yii for one of our customers:


The implementation is based on a legacy database and layout (HTML/CSS). Some services also connect to a backend webservice.

The functionality of the shop is pretty much the same as before, with some AJAX features now added on top.

Even though the two implementations are not really comparable due to a lot of refactoring, we did not expect that the drop of CPU load was that much: about 60-70%. As the PRADO implementation already made use of caching where possible, we were suprised to how much less CPU power is used by the Yii implementation.

[s]UPDATE 2011-05-23:

We now als relaunched the UK Shop for this customer on the same codebase:


Since first launch of the RU shop we tuned the caching and JS/CSS compression + caching strategies even more and could achieve another drop in CPU utilization on this server.[/s]



UPDATE: The UK shop is no longer using Yii.

very nice job!

very nice and fast


Regarding speed:

Even though the old shop already was quite fast due to lot of caching, the new implementation is even faster. And we didn’t optimize caching here yet so i guess, there’s still even more room for improvement.


[s]Relaunched the UK site of this shop now also on Yii:


UPDATE: The UK shop is no longer using Yii

We relaunched this Shop with a new design. It’s using a customized Twitter Bootstrap theme - but you will probably hardly see it ;)

Another change is that we connect to a search engine (FactFinder) through REST now, to fetch the category list items. All these category pages are cached for best performance.

That’s really neat!

I am amazed how terse the source is… doesn’t look like Yii much. How did you manage to get it so clean? :)

Define clean :) I mean, we just created some layouts and built a customized Bootstrap with LESS. And we didn’t use many Yii widgets because we didn’t need them. You may find some Yii tracks on the forms, though, e.g. http://www.witt-international.ru/ordercatalogue. But most Javascript is custom code, e.g. to fetch the delivery status on a detail page. I’ve used my package compressor component to let the js/css fly.

So no real secret on the view part - most time was rather spent under the hood on the data part of the site.