views:

47

answers:

4

I've been tasked with removing a frameset from a website (the site now needs to be indexable by various things, so the frameset must go)

The frameset is made up of a left hand explorer like tree (which could have thousands of nodes). The right hand is where the main content appears.

(I'll leave this question as not language specific as it really applies to the web generally, but we are using ASP.Net so it's made slightly easier when MasterPages are considered)

The reason it's in a frame in the first place is so that the tree isn't re-loaded every time the page refreshes...which on removing the frame is going to be an issue.

Is anyone on here aware of a mechanism that we may be able to use to solve this problem and maintain the performance of the page (using frames of any kind (including iframes) is not really an option)

We considered things like a jquery panel that expands from the left hand side - this would still need to be loaded every page refresh though...

A: 

Just use server-side includes. In ASP you can use #include for this.

BalusC
+1  A: 

Could partial caching be the answer?

http://www.4guysfromrolla.com/articles/022802-1.aspx

IMHO, I don't think that even huge text menu/tree is problem - if you have 2000 items, each having let's say 20 characters, overall you download 20kB of data... that is called "tiny", if we're talking in manners of javascript :)

Adam Kiss
A: 

If you don't want to transfer the tree on every page load then the only option is a frame.

Another option would be to transfer the tree on-demand (not by javascript as it won't be used by search engine bots). If the user selects a root node load the next page with the child nodes expanded, etc.

dbemerlin
+1  A: 

What about only loading a small part of the tree at page-load (e.g. the root level and perhaps the current node's siblings) and use Ajax to populate child nodes as and when they are clicked on?

realworldcoder
Good job in the Australian Open by the way
Ben James
Yeah, think this is likely to be the safest way to go, so the initial page load is fast, and then loads in the background...
Paul