Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
15 changes: 15 additions & 0 deletions examples/CRUD/Backend/Program.fs
Original file line number Diff line number Diff line change
@@ -1,9 +1,11 @@
module Backend.Program

open System.IO.Compression
open System.Threading.Tasks
open Backend.Env
open Microsoft.AspNetCore.Builder
open Microsoft.AspNetCore.Http
open Microsoft.AspNetCore.ResponseCompression
open Microsoft.Extensions.DependencyInjection
open Microsoft.Extensions.Logging
open Oxpecker
Expand Down Expand Up @@ -53,6 +55,7 @@ let configureApp (appBuilder: IApplicationBuilder) =
Logger = appBuilder.ApplicationServices.GetRequiredService<ILogger>()
}
appBuilder
.UseResponseCompression()
.UseRouting()
.UseCors()
.Use(errorHandler)
Expand All @@ -64,6 +67,18 @@ let configureServices (services: IServiceCollection) =
.AddCors(fun options -> options.AddDefaultPolicy(fun policy ->
policy.AllowAnyOrigin().AllowAnyMethod().AllowAnyHeader() |> ignore))
.AddRouting()
.AddResponseCompression(fun options ->
// Enable compression for HTTPS (safe for JSON APIs)
options.EnableForHttps <- true
// Add Brotli compression provider (more efficient than Gzip)
options.Providers.Add<BrotliCompressionProvider>()
options.Providers.Add<GzipCompressionProvider>())
// Configure Brotli for optimal compression
.Configure<BrotliCompressionProviderOptions>(fun (options: BrotliCompressionProviderOptions) ->
options.Level <- CompressionLevel.Optimal)
// Configure Gzip as fallback for older clients
.Configure<GzipCompressionProviderOptions>(fun (options: GzipCompressionProviderOptions) ->
options.Level <- CompressionLevel.Optimal)
.AddOxpecker() |> ignore

[<EntryPoint>]
Expand Down
Loading