The proxy component (for example, the XMLHttpRequest object) sends a regular HTTP
 request and waits, either synchronously or asynchronously, for it to be fully served. When the
 response data is ready, the proxy invokes a user-defined JavaScript callback to refresh any portion
of the page that needs updating. Figure 1-2 provides a graphical overview of the model.
All browsers know how to replace an old page with a new page; until a few years ago, though,
 not all of them provided an object model to represent the current contents of the page. (Today,
 I can hardly mention a single modern, commercially available browser that doesn’t expose a
 read/write page DOM.) For browsers that supply an updatable object model for HTML pages,
 the JavaScript callback function can refresh specific portions of the old page, thus making
 them look updated, without a full reload.
 
