<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <meta content="text/html;charset=ISO-8859-1" http-equiv="Content-Type">
</head>
<body bgcolor="#ffffff" text="#000000">
Ian Hickson wrote:
<blockquote
 cite="mid:Pine.LNX.4.62.0808182130080.9667@hixie.dreamhostps.com"
 type="cite">
  <pre wrap="">
All three of the above basically boil down to the same thing -- there are 
hosting providers that don't provide the simplest of features. That's 
certainly true, but there are also hosting providers that provide these 
features for very cheap (e.g. $120/year or less) that provide all this and 
more, so I don't buy this argument. If you're having trouble finding one, 
contact me privately and I can give you a coupon code for one.

  </pre>
</blockquote>
Thank you but I have my own servers. You make a pretty big assumption
here about the usage model of the Internet being corporate + ISP. You
ignore:<br>
<br>
* Web applications and HTML documentation on the local filesystem.<br>
* Local testing in WYSIWYG editors.<br>
* Autorun frontends on CDROM that are typically employed by magazine
coverdiscs.<br>
* Embedded servers in storage devices, media centers, routers and other
gadgets.<br>
* Minimalist HTTP servers for simple usage, websocket tunnels or high
load services.<br>
* Users taking advantage of free hosting services with limited features
(like Sourceforge or Geocities).<br>
* Charities and OSS groups with better things to spend their money on
than hosting package upgrades.<br>
* Companies like many in the building and equipment hire industries
that spent $500 on a website and call it expensive.<br>
<br>
Far from being a small minority these groups and applications possibly
make up the majority of HTML content after blogs.<br>
<br>
<blockquote
 cite="mid:Pine.LNX.4.62.0808182130080.9667@hixie.dreamhostps.com"
 type="cite">
  <pre wrap="">
If it's just a static site, then you can just pre-generate the pages and 
upload the completed pages, so there's no dependency on the server. This, 
incidentally, also works when the server-side hosting provider doesn't 
support SSIs at all.

If it's not a static site, then the SSIs are going to be the least of your 
problems when you change to a different server.

  </pre>
</blockquote>
I assume that by "pre-generated" you're referring to
Dreamweaver/WebObjects templates rather than copy-and-paste. I find
these irritating as quite often you are given one format but require
another (as a FOSS user I can't/won't use Dreamweaver). Some of the
best editors don't have any kind of template support and when they do
it's typically native to the application. Sometimes they're even native
to an installation (you can't export your templates). These things are
bad for the web without some kind of accepted open specification. CSI
could be that specification.<br>
<br>
<blockquote
 cite="mid:Pine.LNX.4.62.0808182130080.9667@hixie.dreamhostps.com"
 type="cite">
  <blockquote type="cite">
    <pre wrap="">Speed. Concerns about speed are generally only valid for the first page 
on the first visit to a site. Subsequent pages can be much faster than 
SSI and even static html since common banners and footers can be cached 
seperately - requiring only a unique content download. This is less 
trivial than it sounds since global drop-down menus, ad frames, tracking 
code, overlays and embedded JS and CSS often account for a vast majority 
of the source code.
    </pre>
  </blockquote>
  <pre wrap=""><!---->
We're talking about such a small amount of data here that the latency far 
outweighs the bandwidth cost on most connections. Given that you still 
have to do an If-Modified-Since check, you don't really gain anything 
here.

  </pre>
</blockquote>
I'm not sure where you get your statistics but these claims don't match
my direct experience. In the typical case a web page is heavily
dependant on included content such as CSS files, images, plugins and
other non-embedded elements. Even geek sites like orielly.com and
slashdot are not immune. According to websiteoptimization.com the
orielly home page has 60 external objects. Many common sites are even
worse. Your claim that adding HTML includes will have any noticeable
affect on overall page loading times needs more analysis.<br>
<br>
orielly.com:<br>
<table class="t" border="1">
  <tbody>
    <tr>
      <td>Total HTML:</td>
      <td>5</td>
    </tr>
<!-- External Objects: HTML Images --> <tr>
      <td>Total HTML Images:</td>
      <td>31</td>
    </tr>
<!-- External Objects: CSS Images --> <tr>
      <td>Total CSS Images:</td>
      <td>14</td>
    </tr>
<!-- External Objects: TOTAL Images --> <tr>
      <td>Total Images:</td>
      <td>45</td>
    </tr>
<!-- External Objects: Total Javascripts--> <tr>
      <td>Total Scripts:</td>
      <td>7</td>
    </tr>
<!-- External Objects: CSS files--> <tr>
      <td>Total CSS imports:</td>
      <td>1</td>
    </tr>
<!-- External Objects: Frame Count--> <tr>
      <td>Total Frames:</td>
      <td>0</td>
    </tr>
<!-- External Objects: iFrame Count--> <tr>
      <td>Total Iframes:</td>
      <td>4</td>
    </tr>
  </tbody>
</table>
<br>
report:
<a class="moz-txt-link-freetext" href="http://www.websiteoptimization.com/services/analyze/wso.php?url=http://oreilly.com/">http://www.websiteoptimization.com/services/analyze/wso.php?url=http://oreilly.com/</a><br>
<br>
<blockquote type="cite">
  <pre wrap="">If we did want to optimise for small parts of the content being 
common over multiple pages, we should investigate dictionary-based 
compression with site-specific dictionaries. That would get us much, much 
better performance than cached CSIs.</pre>
</blockquote>
I like this idea, but it isn't an alternative to CSI from a designers
perspective nor is it likely to have significant gains over current
gzip implementations.<br>
<br>
<blockquote
 cite="mid:Pine.LNX.4.62.0808182130080.9667@hixie.dreamhostps.com"
 type="cite">
  <pre wrap="">This isn't an argument over SSIs. I agree that for inclusions, the &lt;iframe 
seamless&gt; feature isn't optimal. It was not designed for that, it was 
meant for including sandboxed blog comments and the like.

  </pre>
</blockquote>
I absolutely agree that iframes aren't an alternative to CSI, not
vice-versa.<br>
<blockquote
 cite="mid:Pine.LNX.4.62.0808182130080.9667@hixie.dreamhostps.com"
 type="cite">
  <pre wrap=""></pre>
  <blockquote type="cite">
    <blockquote type="cite">
      <pre wrap="">A TCP round-trip is very expensive. A client-side parsing-level 
include would mean that the parser would have to stop while a complete 
round-trip is performed. There's really no way to get around that 
short of making it a higher-level construct like &lt;iframe seamless&gt;.
      </pre>
    </blockquote>
    <pre wrap="">There is actually an easy solution for this, though it is less flexible 
than my original proposal. The solution is to require each include to be 
balanced (equal number of open and close tags) so the surrounding block 
is guaranteed to be a single node. Anything left open is forcefully 
closed (as when reaching &lt;/body&gt; with open blocks). In other words:

&lt;div id="content" style="min-height:500px"&gt;
   &lt;include src="content.ihtml"&gt;
&lt;/div&gt;&lt;!-- always closes content --&gt;
    </pre>
  </blockquote>
  <pre wrap=""><!---->
What do you do when the CSIed page includes script that manipulates 
content after the include? Now you have a race condition. This is just as 
bad as blocking, if not worse, since it's now unpredictable.
  </pre>
</blockquote>
<br>
You do the same thing you always have when external JS or inter-page
requests raise the same issue. Defer JS until the DOM is in a sane
state (onload). In my experience trying to access an object below your
script in the source is a terrible idea and nearly always results in
null object references that crash your page scripts.<br>
<br>
<blockquote
 cite="mid:Pine.LNX.4.62.0808182130080.9667@hixie.dreamhostps.com"
 type="cite">
  <pre wrap="">Anyway in conclusion I don't understand what CSIs give us that is actually 
worth the massive amounts of effort they require. Just generate your pages 
server-side or upload them to your server pre-generated.

  </pre>
</blockquote>
As a developer I tell you this is not really a good option, and I
disagree with your claim of "massive effort". It is a fairly
straightforward feature as they go. Embedded SQL is a massive effort,
WebWorkers is massive effort, client-side includes is quite trivial,
relatively speaking. Certainly worth further investigation in light of
its obvious benefits.<br>
<br>
Shannon<br>
</body>
</html>