The Random Thoughts of a Geek heading for Banbury
The Random Thoughts of a Geek heading for Banbury

bmi.js is not my baby

I’m currently using a T-Mobile 3G mobile connection to do most of my web browsing, as well as the area I am living in not having any signal strength; I have been getting more and more miffed at the image compression and bmi.js, ( I have written about this before).

Bmi.js, and I guess the image compression are a result of ByteMobile‘s “Smart Capacity”

Through a wide range of patented optimization techniques, as well as caching, Bytemobile web optimization solutions enable network operators to cut internet and mobile application traffic by 30-35%. This includes traffic generated by the automatic download of software updates. The result is reduced network congestion and significantly faster web page downloads, leading to superior quality of experience (QoE) for mobile subscribers.

Some of the annoying problems with it are:

  • All the images are pipes through a proxy to degrade their quality and reduced their resolution in order to speed up the browsing experience, this can get annoying very quickly. However hovering over the images ushaly reveals a hint that: “Shift+R improves the quality of this image. Shift+A improves the quality of all images on this page“.
  • bmi.js is not very well written it hijacks event handlers and stands a high chance of messing up the scripts you want to run.
  • Non-deterministically inlines some of the CSS and JavaScript into the main source files of the web pages. This can create errors either because of mistakes in their algorithm or the consequence of stripping white space from source files.
  • Strip copyright messages from copyrighted javascript libraries and css libraries.
  • Breaks Local Caching: For example, A user is visiting a sequence of pages on your site which all use the same jQuery libraries. Instead of letting the mobile browser locally cache the library, ByteMobile inline the library on every page, forcing your phone to load the entire library over and over again for every page.
  • Its not just my Browser that these alterations are made in, any where that an image is displayed (or html page is pulled in) the alterations are made, so emails, RSS reader, iTunes for example.

There seem to be a limmited number of Workarounds; some more use than others:

  • Only visit https sites; (EFF’s HTTPS Everywhere available for FireFox and Chrome makes staying on https easer). However not all websites are available via https; while you can go to // it will return an error telling you the certificate is invalid.
  • Another workaround (if you have access to your .htaccess file) is to on the server you can set cache control by adding Cache-Control: no-transform to your .htaccess file
    # Force no caching
    <FilesMatch ".*">
    Header append Cache-Control "no-transform"
    Header append Vary "User-Agent, Accept"

    This will stop all modifications and present your site correctly (assuming that ByteMobile respect this), and that you only look at sites where this has been set.

  • If you are writing PHP you can control your HTTP by using something like this:
    header("Cache-Control: no-transform");
    header("Vary: User-Agent, Accept");
  • And ASP
    Response.AddHeader "Cache-Control", "no-transform"
    Response.AddHeader "Vary" , "User-Agent"
  • One that may work (assuming the Telecommunication company haven’t brorken it) is Bytemobile Unison feature called “clientless personalization”. It should be able to be reached via – if it’s configured, you will end up on a page which will offer you to disable all feature you don’t like.
    • T-mobile it’s called “Mobile Broadband Accelerator” You can Visit: or to configure it.
    • I will try and update this list as I find out where other config pages are located.

Leave a comment

Your email address will not be published.