ACTION-696: Summarise the U Helsinki masters thesis on Mobile Ajax performance

In Seoul's F2F, I said I would summarize the thesis from a BP-centric 
point of view, so here's my try...


Document
--------
Performance of Ajax applications on mobile devices
by Mikko Pervilä (University of Helsinki, Department of Computer Science)
http://www.cs.helsinki.fi/u/pervila/Gradu/index.html


In short for BPs
----------------
The thesis (indirectly) mentions already included best practices, may be 
used to complete/emphasize some of them, but IMHO doesn't mention any 
new one.

The References part includes some really interesting material, and there 
may be some new BPs there.


Abstract
--------
The thesis evaluates the presentational capability and measures the 
performance of five mobile browsers, testing 12 Ajax toolkits and 8 
production-quality applications.

Ajax is defined as a design pattern: "using any single component 
technology is not strictly required" where component technology includes 
  Javascript, XMLHttpRequest, XML, hidden IFrame, DOM manipulation, HTTP 
streaming... I guess this directly matches the way we would also define it.

Motivation for Mobile Ajax: improve user input speed, lesser display 
processing requirements, smaller amounts of transferred data [Whi05], 
and better compatibility between devices.

Results indicate that:
- the initial loading time of a full-featured Ajax application can often 
exceed 20 seconds [and so BPs are probably needed...]
- the support for Javascript varies between mobile browsers [I guess it 
links to our BP 5.9.2 Use Reliable Methods for Determining Script Support]

Note the thesis doesn't recommend best practices but rather (indirectly) 
mentions practices or references docs that list best practices, 
sometimes explaining the effects of them, and thus the thesis never says 
"this BP is cool, use it!".


New BPs?
--------
1/ Reduce DNS Lookups
See http://developer.yahoo.com/performance/rules.html#dns_lookups
It's rather an example of something one could have in mind when trying 
to minimize the number of HTTP requests needed to display a web page

2/ Configure ETags
Same thing, and same doc:
http://developer.yahoo.com/performance/rules.html#etags
To minimize the size of data, improve caching (goes with 5.5.6 Minimize 
External Script Files?)

Actually, the whole Yahoo! document [Yah07e] is about such Best 
Practices to speed up Web pages downloads and display. It's not specific 
to mobile, but then, given the constraints of mobile, it may be regarded 
as making "more" sense in the Mobile Web.


Links to existing BPs
---------------------
- 5.5.1 Use Transfer Compression for Content
"The space and time requirements for XML processing can be much 
alleviated through the use of binary XML"
See p16


- 5.5.3 Use Push Methods to Reduce Pull Traffic

It may not be exactly a Push method, but the doc mentions the use of 
HTTP streaming (also called "Comet") and/or pipelining as a way to save 
the TCP handshake between requests.
I'm not sure we can list that as an example of BP. It seems not to 
really work with proxies for instance, and proxies are part of everyday 
life in the Mobile World.
See p13, p22, [Aja07b] and [Rus06]


- 5.5.6 Minimize External Script Files

The doc references some techniques to delay the inclusion of code until 
it's really needed and thus reduce the amount of data transferred.
See p20, [Lun02] and [Aja07a]


- 5.9.2 Use Reliable Methods for Determining Script Support

Not directly mentioned, but one of the results of the tests is that 
script support varies greatly from one browser to another.


- 5.11.1 Use Power-Efficient Methods

More a "maybe" statement than an extensively-verified one:
"even extreme Ajax usage does not seem to increase the battery drain by 
a factor greater than four". (p75)


Some interesting references
---------------------------
[Aja07b] HTTP streaming, http://ajaxpatterns.org/HTTP_Streaming

[Rus06] Russell, A., Comet: Low Latency Data for the Browser. Continuing 
Intermittent Incoherency, 23.3.2006, http://alex.dojotoolkit.org/?p=545

[Lun02] Lundqvist, D., Remote scripting with javascript, 
http://www.dotvoid.com/view.php?id=13

[Aja07a] On-Demand JavaScript. AjaxPatterns wiki, 
http://ajaxpatterns.org/On-Demand_Javascript

[Whi05] White, A., Measuring the benefits of Ajax. Developer.com, XML 
Articles, October 2005, 
http://www.developer.com/xml/article.php/10929_3554271_1

[Yah07e] Yahoo! BPs for speeding up your web site, 
http://developer.yahoo.com/performance/rules.html

[Kra05] Krantz, P., AJAX and Accessibility. Standards Schmandards, 
1.3.2005, http://www.standards-schmandards.com/2005/ajax-and-accessibility/


François.

Received on Thursday, 20 March 2008 13:58:08 UTC