mirror of
https://github.com/Part-DB/Part-DB-server.git
synced 2026-01-23 02:29:34 +00:00
63 lines
No EOL
2.4 KiB
Markdown
63 lines
No EOL
2.4 KiB
Markdown
# 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.js` module
|
|
- Load ZXing configuration only when barcode scanner is used
|
|
- Added proper error handling and logging
|
|
- **Files**:
|
|
- `assets/js/app.js`
|
|
- `assets/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:
|
|
|
|
```javascript
|
|
// 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 |