Select dropdown with many, many Options, most efficient way to populate?

Select dropdown with many, many Options, most efficient way to populate?

I am populating a number of Select boxes on the server-side with a large number of options.  I'd like to get the response size down without taxing the client browser too much.  What do you think is the most efficient way to approach this problem? 

Here are some considerations:

- The option text/values do not change very often, but could potentially change in the future.

- The page that holds the select boxes should never be cached, there are other aspects of the page that need to remain fresh.

- Firebug with YSlow is saying that the primed cache size of the page is 300Kb with all the select dropdowns and options, if I remove the options, the primed cache size of the page is 80Kb.

- I am considering breaking out the text/value pairs for the select boxes into a separate file that is cache-able calling it "valueTextPairs.js" and referencing it with a query string and some sort of server-generated MD5 hash of the data, so that if any of the values change, the client's cached version will be replaced by the latest version.  Like so:
  1. <script type="text/javascript" src="scripts/valueTextPairs.js?hash=alkfdj233kjrdfsaj" />

Provided I do this, I anticipate that the primed cache size of the page will be reduced down to 80Kb (which I like) -- however, before I take the plunge, I am curious what you all think the performance effect will be?

 I know the number of bytes on the wire will be reduced, but will this put a lot of additional pressure on the client's browser because I'd need to traverse the name/value pairs and add the options to the select boxes dynamically on the client end?  If it seems reasonable to do this, what jQuery approach would be the most efficient?  $('#selectId').html(options) with options = one big string?  Adding each child option to the select in a loop?  Something else?

Some client end folks are using IE6 so I am trying to tax the browser as little as possible, while also reducing the size of each request, trying to find a happy medium..  Appreciate any feedback!