Caching WCF javascript proxy on browser
When you use WCF services from Javascript, you have to
generate the Javascript proxies by hitting the
Service.svc/js. If you have five WCF services,
then it means five javascripts to download. As browsers
download javascripts synchronously, one after another, it
adds latency to page load and slows down page rendering
performance. Moreover, the same WCF service proxy is
downloaded from every page, because the generated javascript
file is not cached on browser. Here is a solution that will
ensure the generated Javascript proxies are cached on
browser and when there is a hit on the service, it will
respond with HTTP 304 if the Service.svc file
has not changed.
Here’s a Fiddler trace of a page that uses two WCF services.
You can see there are two /js hits and they are
sequential. Every visit to the same page, even with the same
browser session results in making those two hits to
/js. Second time when the same page is browsed:
You can see everything else is cached, except the WCF javascript proxies. They are never cached because the WCF javascript proxy generator does not produce the necessary caching headers to cache the files on browser.
Here’s an HttpModule for IIS and IIS Express
which will intercept calls to WCF service proxy. It first
checks if the service is changed since the cached version on
the browser. If it has not changed then it will return HTTP
304 and not go through the service proxy generation process.
Thus it saves some CPU on server. But if the request is for
the first time and there’s no cached copy on browser, it
will deliver the proxy and also emit the proper cache
headers to cache the response on browser.
http://www.codeproject.com/Articles/360437/Caching-WCF-javascript-proxy-on-browser
Don’t forget to vote.