The standard HTML/XHTML document model is static. Once displayed on
the browser, a document does not change until the user initiates some
activity like selecting a hyperlink with the mouse.[67] The Netscape
developers found that limitation unacceptable and built in some
special features to their browser that let you change HTML document
content dynamically. In fact, they provide two different mechanisms
for dynamic documents, which we describe in detail in this chapter.
Internet Explorer supports some of these mechanisms, which
we'll discuss as well.
13.1. An Overview of Dynamic Documents
If you remember from our discussion in Chapter 1, "HTML, XHTML, and the World Wide Web",
the client browser initiates data flow on the Web by contacting a
server with a document request. The server honors the request by
downloading the document. The client subsequently displays the
document's contents to the user. For normal web documents, a
single transaction initiated from the client side is all that is
needed to collect and display the document. Once displayed, however,
it does not change.
Dynamic documents, on the other hand, are the result of multiple
transactions initiated from either or both the server side and the
client side. A client-pull document is one that initiates
multiple transactions from the client side. When the server is the
instigator, the dynamic document is known as a
server-push document.
In a client-pull document, special HTML codes tell the client to
periodically request and download another document from one or more
servers on the network, dynamically updating the display.
Server-push documents also advance the way servers communicate with
clients. Normally, over the Web, the client stays connected with a
server for only as long as it takes to retrieve a single document.
With server-push documents, the connection remains open and the
server continues to send data periodically to the client, adding to
or replacing the previous contents.
Netscape is currently the only browser able to handle server-push
dynamic documents correctly; both Internet Explorer and Netscape
support client-pull documents. With other browsers, you might see
only part of the dynamic document at best. At worst, the browser will
completely reject the document. Unfortunately, because dynamic
documents are client-server processes, they don't work without
an HTTP server. That means you can't develop and test your
dynamic documents stored as local files unless you have a server
running locally as well.
13.1.1. Another Word of Caution
As always, we tell you exactly how
to use these exciting but nonstandard features, and we admonish you
not to use them unless you have a compelling and overriding reason to
do so. We are particularly strident with that admonition for dynamic
documents, not only because they aren't part of the HTML
standard, but because dynamic documents can hog the network. They
require larger, longer downloads than their static counterparts. And
they require many more (in the case of client-pull) or longer-term
(for server-push) client-server connections. Multiple connections on
a single server are limited to a few of the vast millions of web
users at a time. We'd hate to see your readers miss out because
you've created a jiggling image in a dynamic document that
would otherwise have been an effective and readily accessible static
document more people could enjoy.