Enable Brotli and Gzip Compression in ASP.NET Core
Configure ASP.NET Core Response Compression Middleware for Brotli and Gzip, understand the HTTPS and compression-level trade-offs, and verify the result in...
Start typing to search articles and topics.
The Piotr Bach Blog
Articles, observations and practical notes on software, the web and the work of building digital products.
Configure ASP.NET Core Response Compression Middleware for Brotli and Gzip, understand the HTTPS and compression-level trade-offs, and verify the result in...
Umbraco 13 does not always make it obvious when a Database Cache rebuild has finished. Use the umbracoKeyValue table to verify the latest NuCache serializer...
An Umbraco project can be stable in production and still be expensive to change, difficult to upgrade, fragile under failure, or dependent on assumptions...
A single unreadable JSON log file made the Umbraco 13 LogViewer practically unusable. The first fix addressed Newtonsoft.Json MaxDepth. A later failure...
Send email through SendGrid's SMTP relay from a .NET Framework 4.8 application using System.Net.Mail.SmtpClient. The tested example includes HTML email,...
Learn how to remove Examine indexing for enhanced site performance, faster content publishing, and improved cold boots. Check benefits and pain points.
After upgrading a production-scale Umbraco installation from 11.5.0 to 13.4.1, publishing and unpublishing became extremely slow and database lock errors...
Learn how to fix the SQL Server error “The certificate chain was issued by an authority that is not trusted”, why it has become more common with newer SQL...
Learn how to set a dynamic Multinode Treepicker start node in the AngularJS backoffice so editors open the picker in the relevant part of the content tree.
AngularJS can render HTML stored in a model, but the security implications depend on whether that HTML is sanitized or explicitly trusted. This guide shows...
If System.Net.Mail.SmtpClient sends an invalid hostname in the SMTP EHLO command, some mail servers reject the connection before the message is sent. Here is...
Set UmbracoApplicationUrl per environment without hardcoding deployment-specific URLs in appsettings.json. Azure App Service environment variables map...
If a Windows domain account already exists but cannot access SQL Server, you normally do not create another Windows account or a SQL-authentication password....
If an existing Windows domain account receives Login failed for user because SQL Server has no corresponding login, you can create the Windows-authenticated...
How to inspect and reseed an IDENTITY column correctly, including the important difference between DELETE and TRUNCATE TABLE.
A focused URL warm-up pattern for Umbraco 13 using a recurring hosted service, interchangeable URL providers, and an HTTP request strategy.
Use partition metadata for a fast database overview, or run exact counts when the precise number of rows is required.
A technical audit guide for finding personal data in an Umbraco solution and reducing the risk of keeping, exposing or processing more data than the project...