Dec 31, 2009

WEBO Site SpeedUp - configuration sets & debugging

In the coming new version of WEBO Site SpeedUp we prepared a lot of technical innovations and UI enhancements. One of them is sets of configuration - now you can simply choose one of the predefined settings' sets, or create your own based on one of them.

Configuration sets

As you can see from the upper screenshot there can be unlimited sets of configuration with 3 predefined - safe (which is completely safe for all environments, but doesn't provide a lot of acceleration), optimal (balanced one), and extreme (which should be re-configurated before it can be used for a live website).

Application debugging

We new concept of debug / live mode for WEBO Site SpeedUp application you can simply tune / debug current configuration set and save it. There a lot of options to configure, so basic process can be a bit hard for newbies.

But we prepared a lot of hints through the user interface - they should help you to speedup your website with WEBO Site SpeedUp.

Configuration export / import

After basic configuration is ready you can prepare one-two more configuration sets (if you have time, or just on a test website). And copy them to the live website. After this you can apply any of available sets 'on fly' painless (also in debug mode to be re-sure that all is OK with your website).

With new dashboard cache refresh and debugging application is much easier. Your just need to press 'Enable' or 'Refresh cache' - all the other actions wll be performed automatically.

Get WEBO Site SpeedUp

All these options are avilable in the latest alpha version - It already has update-to-beta procedure (you just need to go to "System Status -> Updates" and check 'Show information about beta versions'. After this just press 'Install' (below current beta version change log) - all files will be downloaded from beta repository and applied automatically.

Dec 23, 2009

WEBO Site SpeedUp alpha version

Actually in Xmas eve we prepared alpha preview of WEBO Site SpeedUp (formerly Web Optimizer). You can get it from official repository here (link updated to alpha2): Main feature is new interface and a few more tools + improved overall stability. Some screenshots:

Control Panel

Here are all important blocks which should help you to increase load speed of your website - Settings overview, System status, Cache, Load speed, optimization tools, Updates, News, etc.


On cache screen you can refresh overall cache and get all information about actual files.

On cache reload you see all performed actions.

System status

Here are listed all warnings / troubles with server environment, also some useful information about application.

Optimization tools

Optimization tools (static gzip and image optimization) allow you to compress your files in interactive mode. Image optimization will be performed via / services (in alpha only former is available).

Get alpha2 version and leave your feedback.

Any issues can be also submitted to issue tracker.

Dec 16, 2009

Web Optimizer for CDN

After a couple of questions (how Web Optimizer can be used to move all assets to CDN) we prepared a quick quide to let you use Web Optimizer with your CDN easily.

So step-by-step

  • First you need to have CDN host setuped as a mirror for your website. I.e. if you have an image you must have (right now Web Optimizer correctly supports only 1 subdomain for CDN -
  • After this initial CDN setup you new to set only 2 options in Web Optimizer configuration. First if 'host' (the very first screen of settings, near license key field). Set it to This turns on CDN usage for CSS / JS merged assets.
  • Then you should enable multiple hosts. For this purpose in the group "Multiple hosts" just enable their usage + disable option "Check hosts' availability automatically" (this seems don't work properly in case of CDN). And enter 'cdn' (without quotes) to the field "Allowed hosts, i.e. img i1 i2".

That's all! So you will have the following options:

Website host (to include before static resources), i.e. ->
Enable multiple hosts -> Yes
Check hosts' availability automatically -> No
Allowed hosts, i.e. img i1 i2 -> cdn

So this will turn on CDN usage for your website fast and easily.

A good example of CDN mplementation is

Dec 11, 2009

Web Optimizer in Bitrix

Web Optimizer in BitrixThis night Web Optimizer has been added to official Bitrix repository (Bitrix provides large varierty of solutions to create corporate websites / intranet systems / e-stores). It seems now you can install for any Bitrix product (with the same license policy as for the other plugins / standalone Web Optimizer version - Community, Lite, and Premium Editions).

Also Web Optimizer is listed on Wordpress and Joomla! Extensions Directory. Feel free to leave your comment / vote for us there.

Dec 9, 2009

Rocket Boost your site

Web Optimizer Premium EditionTo make your website ready for Xmas shopping season we offer 20% discount for all editions of Web Optimizer.

Simply use promotional code webo_nwy20092010 and get 20% off. Site optimization was never that easy!

Also you can order basic or advanced installation — our engineers will help to make your website the fastest one.

Promotion will end at December 31, 2009.

Dec 3, 2009

Conditional caching: several approaches

Cache integrityLast month we talked about various caching layers last month. The latest 'line of defense' is conditional caching.

What is Conditional Caching?

Browser usually has a lot of resources in its local cache. Some of them can be expired but browser can check if they can be used once more. So there is a way (frankly speaking two different ways) to check if a resource can be used once more.

First we can use Last-Modified (specified in HTTP/1.0) and its pair — If-Modified-Since. Server sends header Last-Modified with the resource modification date. Browser can request if resource was changed since the last request and send this date back with If-Modified-Since header. If there were no modifications server responses with 304-answer.

There is almost the same situation with ETag and If-None-Match (or If-Match) headers. Expect the only thing that Entity Tag can be any string (date, set of numbers, file name, etc). So this allows you to define it any way. But ETag belongs to HTTP/1.1 specification.


With 304-answers server actually doesn't send any content to browser so you save transfer time for these resources.

If can be also useful for a kind of dynamic content which can't be cached for a long time but can't be changed often. So browser re-requests such content (if cache is expired) but receives answer 'Not modified'.

Also if helps with pages' reload - when visitor presses Ctrl+R in his/her browser the latter must request from the server all resources. So such kind of refresh can be made faster with conditional caching.

Practical examples

Apache server usually sends ETag among Last-Modified. There is mod_headers that is responsible for such behavior (and it seems for 304-answers). You can add ETag header (which indicates file modification time only) this way:

FileETag MTime

You can also unset each of these headers:

Header unset Last-Modified
Header unset ETag

With PHP you can send the equivalent of these headers by:

header("Last-Modified: " . gmdate("D, d M Y H:i:s", $time));
header("ETag: \"" . md5(gmdate("D, d M Y H:i:s", $time)) . "\"");

If you want to emulate 'classic' ETag which Apache server sends by default you need to use:

header("ETag: \"" . dec2hex(@fileinode($filename)) . '-' .
dec2hex(@filesize($filename)) . '-' . dec2hex($mtime) . "\"");

where dec2hec is a helper to convert numbers for correct conversion numbers from decimal to heximal.


First of all you need to send different conditional headers with compressed and not compressed content. Generic approach here is to add '-gzip' to the end of the ETag (there is nothing to do with Last-Modified so it's a bit less usable).

Then you need to make such headers equal through all servers you use to server content. Because common ETag header in Apache includes information about inode (server-related, but not actually file-related), so it must be eliminated or replaced.

Then there is information (not approved yet) about excessive requests from browsers with conditional headers. Please be careful with this.

For static resources Web Optimizer unsets Last-Modified header for all static resources and sets ETag based on modification time. For dynamic ones it (if HTML documents are cached) sets ETag based on content hash and Last-Modified with static PHP proxy.

Dec 1, 2009

Web Optimizer 0.6.7 released

Last 0.xx version before major 1.0 release has been published today - 0.6.7 aka 'frost'. We tuned a lot of minor stuff and improved a number of parts of application.

  • Added delayed load for iframes. Now you can exclude iframes (i.e. ads) from general waterfall of website load (to prevent their blocking nature) — the same way as for Unobtrusive logic.
  • Improved behavior for 'Uniform cache files' option. Now conditional comments are striped for all browsrs except IE and HTML cache files relate to current set of options.
  • Enabled optimization for cached content in Drupal. There was a bug in Drupal native module with not optimized content on caching. Now Web Optimizer works in any case, it doesn't matter have you cached your website on server side or not.
  • Separated Upgrade / Install to stable / beta branches. One more big change before 1.0 release — now you can upgrade either to the latest stable branch, or to the latest beta (the most featured) version on the product. And switch between them.
  • Added Web Optimizer module for Bitrix. Bitrix is the most known CMS for corporate websites, and now Web Optimizer supports it in native mode.
  • Improved unobtrusive logic (added some ads).
  • Improved files combine (added exclusions, general logic).

Download the latest version of Web Optimizer