- Notifications
You must be signed in to change notification settings - Fork15
Middleware for Compression in HORSE
License
HashLoad/horse-compression
Folders and files
| Name | Name | Last commit message | Last commit date | |
|---|---|---|---|---|
Repository files navigation
horse-compression is an official middleware for compressing content in APIs developed with theHorse framework.
We created a channel on Telegram for questions and support:
Installation is done using theboss install command:
boss install horse-compression
If you choose to install manually, simply add the following folders to your project, inProject > Options > Resource Compiler > Directories and Conditionals > Include file search path
../horse-compression/srcThis middleware is compatible with projects developed in:
- Delphi
- Lazarus
Currently, the middleware is prepared to compress the data using DEFLATE and GZIP.
| Type | Delphi | Lazarus |
|---|---|---|
| DEFLATE | ✔️ | ✔️ |
| GZIP | ✔️ | ❌ |
uses Horse, Horse.Jhonson, Horse.Compression,// It's necessary to use the unit System.JSON;begin THorse .Use(Compression())// Must come before Jhonson middleware .Use(Jhonson);// You can set compression threshold:// THorse.Use(Compression(1024)); THorse.Get('/ping', procedure(Req: THorseRequest; Res: THorseResponse; Next: TProc)var I: Integer; LPong: TJSONArray;begin LPong := TJSONArray.Create;for I :=0to1000do LPong.Add(TJSONObject.Create(TJSONPair.Create('ping','pong'))); Res.Send(LPong);end); THorse.Listen(9000);end;
{$MODE DELPHI}{$H+}uses{$IFDEF UNIX}{$IFDEF UseCThreads} cthreads,{$ENDIF}{$ENDIF} Horse, Horse.Jhonson, Horse.Compression,// It's necessary to use the unit fpjson, SysUtils;procedureGetPing(Req: THorseRequest; Res: THorseResponse; Next: TNextProc);var I: Integer; LPong: TJSONArray; LJson: TJSONObject;begin LPong := TJSONArray.Create;for I :=0to1000dobegin LJson := TJSONObject.Create; LJson.Add('ping','pong'); LPong.Add(LJson);end; Res.Send<TJSONArray>(LPong);end;begin THorse .Use(Compression())// Must come before Jhonson middleware .Use(Jhonson);// You can set compression threshold:// THorse.Use(Compression(1024)); THorse.Get('/ping', GetPing); THorse.Listen(9000);end.
When using the middleware, the response size was approximately 67 times smaller. Data were collected using the project available within thesamples (delphi) folder. To default, responses less than or equal to 1024 bytes will not be compressed.
| Property | Without | With |
|---|---|---|
| Time(ms) | 108 | 126 |
| Size(bytes) | 15.770 | 236 |
horse-compression is free and open-source middleware licensed under theMIT License.
About
Middleware for Compression in HORSE
Topics
Resources
License
Uh oh!
There was an error while loading.Please reload this page.
Stars
Watchers
Forks
Packages0
Contributors6
Uh oh!
There was an error while loading.Please reload this page.