Fork me on GitHub

Instantly make any ASP.NET website faster with almost no effort!

Visual Studio Gallery and MSDN Code Samples Gallery see a 20% reduction in HTTP requests and 18% faster global page load times after deploying RequestReduce!  See blog post
Why settle for poor performance?
When now its so easy to make your website faster!
  • Auto generates sprites from your background images
  • Optimizes Sprite PNG format and compression
  • Optimizes caching headers and ETags
  • Can sync content accross multiple web servers
  • Works well with CDNs
  • Compiles Less, Sass and Coffee script

Getting Started

  1. If you have Nuget, simply enter this command in the Package Manager Console and skip steps two and three:
    Basic RequestReduce Features:

    PM> Install-Package RequestReduce

    RequestReduce Features with Sql Server Web Farm Syncing:

    PM> Install-Package RequestReduce.SqlServer

    RequestReduce with Less, SASS and Coffee Script compiling:

    PM> Install-Package RequestReduce.SassLessCoffee

    Or to download everything in one zip, get the latest version here.
  2. Extract the contents of the downloaded zip and copy RequestReduce.dll as well as optipng.exe to your website's bin directory. If for some reason you cannot put optipng.exe in your bin, RequestReduce will function as expected but will skip the lossless compression of its sprite images. If you want the functionality provided by the SqlServer or SassLessCeffee add on assemblies, copy the contents of their directories to your bin as well. If using RequestReduce.SqlServer, there are some additional confg settings and a sql script that should be run. see here for details.
  3. Add the RequestReduceModule to your web.config or using the IIS GUI

    Assuming you are using IIS 7, you would add it by ensuring that your web.config's system.webServer/modules element contains an add element as follows:

     <system.web> <httpModules> <add name="RequestReduce" type="RequestReduce.Module.RequestReduceModule, RequestReduce" /> </httpModules> </system.web> <system.webServer> <validation validateIntegratedModeConfiguration="false"/> <modules> <add name="RequestReduce" type="RequestReduce.Module.RequestReduceModule, RequestReduce" /> </modules> </system.webServer> 
    
  4. Optimize your CSS to help RequestReduce better locate your background images. If you find that images are being distorted, see this wiki.
  5. Optional: Configure RequestReduce. You can control where generated css and sprites are stored, there size thresholds and specify a CDN host name to reference

All background images you want to sprite must have an explicit width in their css class. Otherwise RequestReduce cannot guarantee that the background positions it injects will not cause adjacent sprites to bleed into a background image's view port. Also, RequestReduce will ignore repeating images so make sure to mark the image no-repeat if it is not a repeating image.

Dependencies

Troubleshooting

If RequestReduce does not appear to be doing anything, check out this troubleshooting wiki which provides several scenarios, options and debugging tips for figuring out why your content may not be being reduced. Also check the list of wiki support pages which provides documentation addressing several topics to help you optimize RequestReduce and explain how RequestReduce works.

What's Next?

There are a ton of features I intend to add in order to make web performance optimizations just happen as part of installing Request Reduce. Here is what's at the top of the backlog: