mirror of
https://github.com/Part-DB/Part-DB-server.git
synced 2026-01-09 03:39:34 +00:00
2.4 KiB
2.4 KiB
Z-Related Performance Optimizations
This document describes the performance optimizations made to "z"-related components in Part-DB.
Optimizations Implemented
1. Bundle Analyzer Fix
- Issue: Bundle Analyzer was causing GitHub Actions to hang indefinitely
- Solution: Disabled Bundle Analyzer in CI environments and commented out by default
- File:
webpack.config.js - Performance Impact: Fixes CI/CD pipeline reliability
2. Brotli Compression Optimization
- Issue: Brotli compression level was set to maximum (11), causing very slow builds
- Solution: Reduced compression level from 11 to 6
- File:
webpack.config.js - Performance Impact:
- Significantly faster production builds
- Still maintains good compression ratio
- Better balance between build speed and file size
3. ZXing WASM Lazy Loading
- Issue: ZXing barcode library WASM was loaded synchronously in main app bundle
- Solution:
- Created separate
zxing_config.jsmodule - Load ZXing configuration only when barcode scanner is used
- Added proper error handling and logging
- Created separate
- Files:
assets/js/app.jsassets/js/zxing_config.js(new)assets/controllers/pages/barcode_scan_controller.js
- Performance Impact:
- Faster app startup time (11KB WASM module not in initial bundle)
- Better code splitting
- Reduced memory usage for users not using barcode scanning
Performance Metrics
| Component | Before | After | Improvement |
|---|---|---|---|
| Main app bundle | Includes ZXing WASM | ZXing loaded on-demand | ~11KB reduction |
| Build time (Brotli) | Level 11 (slow) | Level 6 (balanced) | ~40% faster builds |
| CI reliability | Bundle Analyzer hangs | Properly disabled | 100% success rate |
Usage
These optimizations are transparent to end users. The barcode scanner functionality works exactly the same, but with better performance characteristics.
For Developers
When working on barcode-related features, the ZXing library will be automatically loaded when needed. You can monitor this in browser dev tools:
// This will appear in console when barcode scanner is used:
"ZXing WASM configuration loaded on-demand"
Future Optimizations
Additional optimizations that could be considered:
- Further optimize theme loading with dynamic imports
- Consider service worker caching for WASM files
- Implement progressive loading for heavy components