more UI suggestions/comments

Eugene Lee eugene at anime.net
Sat Jan 20 06:00:33 PST 2001


Had some more bugs/comments/suggestions in my mind this week.  Thanks in
advance for listening, and of course never enough thanks for making a
great web browser!

1) JavaScript bug?  No pull-down menu items show up here:

	http://www.traffic.com/home/html/traffic.html

2) Something about the display bothers me.  In the browser window,
OmniWeb uses the display window to fit a rendered web page.  This is
normally not a problem.  However, there are quite a few sites that do
not use tables to limit the width of the web page.  If the web page has
too much stuff to fit inside the display window, scrollbars are added to
the display window.  With the scrollbars there, the display window is
smaller on each side by an amount equal to the scrollbar width.  A side
effect is that this sometimes causes the contents of the web page to be
shifted around, as if the display window size is being changed via the
window resize button.  Is this something to worry about?  Does this make
OmniWeb do more work than it really needs to?

3) There's something wierd with the SgmlToText routine.  At home (where
I have less-than-28.8 connection), there are times when I load several
web pages at once.  I know that OmniWeb and the TCP/IP stack will easily
handle this many streams.  However, I have noticed situations where I
have requested 3 different web pages, all about the same time.  I know
that the connection to the web sites hosting those 3 pages are
relatively quick, and all 3 browser windows have sent the request and is
waiting for data.  If one browser receives its data while the other
browsers are still waiting for data, it starts running SgmlToText.  But
if the data is sufficiently huge (100+ KB) or is contained in a large
table, it may take 30-60 seconds to render it.  During this time, the
other browsers are still waiting for data, even though I know the
connection to those web sites are very fast.  They do not start
receiving data until SgmlToText is done executing on the first browser
window.  Does SgmlToText block other threads of execution?  It's seems
to behave like so.

4) Also at home, I turn off image loading to speed up web browsing.
Sometimes I'd click on an unloaded image to selectively load it and
display it in the current page.  This works for a single instance of
that image.  If that same image reference exists elsewhere in the page,
the image does not display at those other references in the page.  I'd
have to go to that unloaded image reference and click it to make it
display (but at least it's already in the cache so it's not being
downloaded again).  If an image is selectively loaded, it would be very
useful for all image references in the page to be displayed.

5) And with image loading disabled, cached images are not displayed if
they are referenced by other pages.  I don't know if this would be
considered a bug or a feature.  But it would be nice to have some option
to say "Load Cached Images" under the "Browser" menu (or maybe replace
the existing "Load All Images" entry when the OPTION key is pressed).

6) With the Document Inspector window open, I sometimes accidentally hit
the "Source" button when an image is select.  This occasionally crashes
OmniWeb.  Would it be a good idea to disable the button for non-text
MIME types?

7) I'm having problems with the Cache Timeout settings with regard to
images.  And maybe it's just me misunderstanding how they are applied.
But the online documentation is outdated (what is Omni/DocView? :-).
While visiting Houston, I found this real-time traffic map that was very
useful (they spend alot of time driving down there!):

	http://traffic.tamu.edu/traffic.html

Now, I have "Original HTML or image source" set to 1200 seconds and
"Processed images" set to 60 seconds, in the Cache Timeout preference.
The side effect is that though the web page reloads (it has a 2-minute
refresh set in a META tag), the traffic map is not reloaded.  Using the
Inspector, I saw the image for the traffic map with its expiration set
to 20 minutes in the future.  This was a shock to me, because I thought
that dynamically generated images would be cached according to the
"Processed images" setting.  I guess not!  If I force reload the page,
the latest traffic map is loaded.  So what does the "Processed images"
and the "Original HTML or image source" setting actually cache?  I
couldn't find any information in the online documentation or in the
release notes.

Also, as a suggestion, it would be nice to add more fine-grain controls
to the Cache Timeout stuff, like telling OmniWeb to cache certain image
types differently than others, and even provide a list of domains where
image caching is prohibited.  For example:

	/*
	 * assume image is already downloaded
	 */

	if (image has Expires: header)
	{
		cache according to header
	}
	else if ( (isImageStatic(image) is true)
	    or (isDomainImageCacheAllowed(domain) is true) )
	{
		cache according to static image prefs
	}
	else
	{
		don't cache
	}

	...

	function isImageStatic (image)
	{
		if fileExtension(image) is .gif, .jpg, .png, etc.
		{
			return true
		}
		else
		{
			return false
		}
	}

	function isDomainImageCacheAllowed (domain)
	{
		/*
		 * given a list of domains in the preferences labeled
		 * "Don't cache images from these domains"
		 */
		if domain in user-provided list
		{
			return false
		}
		else
		{
			return true
		}
	}

The domain list where image caching would be prohibited would include
sites that relies on dynamic image generation, such as traffic maps,
mapping sites like MapQuest or MapBlast or Yahoo's mapping feature,
certain weather sites, webcam sites, or broken sites that fail to send
an "Expires:" header.

8) As with #7, apply similar rules to HTML pages.  Static HTML pages may
have .html or .htm extensions.  Dynamic HTML pages may have .cfm, .php,
.shtml, .asp, or pure CGI scripts like .pl and such.


-- 
Eugene Lee
eugene at anime.net



More information about the OmniWeb-l mailing list