Forum Discussion

Andre_Nurwono's avatar
Jan 11, 2010

COMPRESS::nodelay command for streaming compressed, data

Streaming HTTP applications and compression.

 

 

Here's one undocumented iRule command that might not be in the wiki.

 

 

Some web applications stream periodic information, like stock tickers, or chunked animations from servers, within an open HTTP response that sends chunked data.

 

 

When compression is used to reduce the bandwidth utilization of these types of applications, there may be delays when compression waits for full chunks of data before sending out the available information to the client.

 

 

This delay may be eliminated by running this command in your iRule:

 

 

when HTTP_RESPONSE {

 

COMPRESS::nodelay

 

}

 

 

The trade-off for sending off small amounts of data to the client is that compression will not be as efficient as when you're compressing bigger chunks of information, so if your web application isn't providing streaming data through HTTP this command is usually not necessary.

 

 

Older versions of BIG-IP might use a different syntax:

 

COMPRESS::nodelay enable

 

 

I hope this helps anyone who is using HTTP streaming with compression - I think the results in bandwidth savings for streaming applications are definitely worth it.

 

 

Cheers,

 

 

2 Replies

  • Hi Andre,

     

     

    Thanks for the tip. Do you know which version this command was added in? Do you know when the syntax was changed from COMPRESS::nodelay enable to COMPRESS::nodelay?

     

     

    Thanks,

     

    Aaron
  • spark_86682's avatar
    spark_86682
    Historic F5 Account
    It was added in a variety of versions. Among currently supported, it's in v9.3.x, and v9.4.5 and later. In 9.3, it's "COMPRESS::nodelay enable", and in 9.4 it's "COMPRESS::nodelay".