Scenario: I have a complex Asp.net app serving various units through programmatically constructed control collections in HttpModules. Some of these controls use Asp.NET Ajax.
Across many different units, ScriptResource.axd averages a transfer size of ~27k.
I have a ceiling that only allows ~3k for it.
There definitely isn’t time to retrofit all the Ajax functionality with jQuery or hand-rolled js functions or whatnot. We already have the .axd coming over with gzip encoding (uncompressed it’s more like 97k). It’s often cached, but that doesn’t matter: I have to hit a hard, low, externally-imposed limit on first-request total transfer size… markup, scripts, images & all summed up a-la firebug. I’ve been avoiding the .axds, but there really isn’t anywhere else to shave bytes, and I have 24k to go.
Any ideas? Am I sunk?
Possible approaches: I’m not yet using Asp.NET 3.5 SP1’s compositescript functionality, but I figure that would only save on request/response headers, and I’m not even sure headers count against me.
I don’t have any other ideas other than something radical, like creating a response filter that uses reflection & some dictionaries to figure out what js functions are actually needed, and only emit those. I could cache the resulting list for each unit, since I have a low response time ceiling as well, and I don’t think the .axds change from one request to another. Is this feasible? Any other ideas? …what if I buy beer for the hero with a solution?
Reflection is possibly a good idea. Also, look for parts that are rarely used and find another way around it or operate without that functionality. Also, compress the Ajax scripts as much as you can (YUI Compressor works well for JavaScript).