Optimizing Your Application for Production Environments
ABP Framework and the startup solution templates are configured well to get the maximum performance on production environments. However, there are still some points you need to pay attention to in order to optimize your system in production. In this document, we will mention some of these topics.
Caching Static Contents
The following items are contents that can be cached in the client side (typically in the Browser) or in a CDN server:
- Static images can always be cached. Here, you should be careful that if you change an image, use a different file name, or use a versioning query-string parameter, so the browser (or CDN) understands it's been changed.
- Application bundle files of an Angular UI application.
- Application Localization Endpoint can be cached per culture (it already has a
cultureNamequery string parameter) if you don't use dynamic localization on the server-side. ABP Commercial's Language Management module provides dynamic localization. If you're using it, you can't cache that endpoint forever. However, you can still cache it for a while. Applying dynamic localization text changes to the application can delay for a few minutes, even for a few hours in a real life scenario.
There may be more ways based on your solution structure and deployment environment, but these are the essential points you should consider to client-side cache in a production environment.
Bundling & Minification for MVC (Razor Pages) UI
ABP's Background Jobs system provides an abstraction with a basic implementation to enqueue jobs and execute them in a background thread. ABP's Default Background Job Manager may not be enough if you are adding too many jobs to the queue and want them to be executed in parallel by multiple servers with a high performance. If you need these, you should consider to configure a dedicated background job software, like Hangfire. ABP has a pre-built Hangfire integration, so you can switch to Hangfire without changing your application code.
Thank you for your valuable feedback!
Please note that although we cannot respond to feedback, our team will use your comments to improve the experience.