Optimizing Load: CSS and JS Compression on 1C-Bitrix
Your site loads in 5 seconds, and GTmetrix shows CSS and JS account for 80% of the volume. Typical for an average Bitrix project: source files weigh 500 KB–2 MB, and without compression each megabyte is transferred as-is. Configuring HTTP compression (Gzip or Brotli) reduces the amount of transferred data by 3–7 times for text resources—this is one of the fastest ways to speed up loading without changing code. We configure such solutions on dozens of projects, from simple corporate sites to large catalogs.
Built-in Bitrix Compression Tools
Bitrix includes its own mechanism for minification and merging of CSS/JS, available under Settings → Performance → Compression. It works at the PHP level: collects files included via CMain::AddCSSLink() and CMain::AddHeadScript(), minifies them, and saves them to /bitrix/cache/css/ and /bitrix/cache/js/. The resulting files get a hash in the filename—browsers cache them aggressively.
Important: Bitrix minification only works with files included through the Bitrix API. CSS and JS added directly in the template via <link> and <script> are not processed. On legacy projects, often half the files are included "bypassing" the API. We convert such inclusions to standard methods—this is a mandatory step in our audit.
Why Minification Alone Isn’t Enough for Real Acceleration
Minification reduces file size on disk, but during network transfer, data still goes "as-is." Without HTTP-level compression (gzip/Brotli), you lose 70–80% of potential gain. For example, a minified jQuery UI file might be 150 KB, but with gzip only 40 KB. The difference is noticeable on every request.
How to Set Up gzip on nginx for Bitrix?
The nginx configuration requires just a few directives:
gzip on; gzip_types text/css application/javascript application/json text/javascript; gzip_min_length 1024; gzip_comp_level 5; gzip_vary on; gzip_comp_level 5 balances compression ratio and CPU load. Levels 6–9 give minimal gain at significantly higher load. gzip_vary on adds the Vary: Accept-Encoding header, needed for correct caching proxy and CDN operation. Brotli compresses even better—gain up to 20% over gzip. Configuration is similar, but requires the ngx_brotli module.
What Brotli Gives Compared to gzip?
Brotli is 1.2–1.3 times more efficient than gzip in compression ratio. It is preferable for modern browsers but requires an nginx module. Configuration:
brotli on; brotli_types text/css application/javascript application/json text/javascript; brotli_comp_level 6; It's best to keep gzip as a fallback for older clients. Both methods can be combined: gzip_static on for pre-compressed files.
What to Check During Setup
A common mistake: double compression—gzip is enabled in nginx, but PHP-FPM or Bitrix itself also compresses responses. Symptom: the browser gives a decoding error or the file downloads instead of executing. Check with curl -I -H "Accept-Encoding: gzip" https://mysite.ru/bitrix/cache/css/file.css—headers should contain Content-Encoding: gzip.
For minified files with a hash in the name, we recommend configuring static (pre-compressed) compression via gzip_static on—nginx serves a pre-compressed .gz file without real-time CPU load.
How to manually check compression?
Use curl:curl -I -H "Accept-Encoding: gzip, br" https://example.com/bitrix/cache/css/s1/main.css
Look for Content-Encoding: gzip or Content-Encoding: br in the response. If the header is missing, compression isn't working.
Case from Our Practice
A corporate Bitrix site "Standard"—12 CSS and 23 JS files included via API. After enabling Bitrix minification and gzip on nginx: total CSS+JS size dropped from 1.4 MB to 180 KB (minification) → 48 KB (gzip). CSS requests reduced from 12 to 2, JS from 23 to 3. DOMContentLoaded time decreased by 0.8 s on 3G mobile connections.
| Method | Size (original) | Size (compressed) | Requests |
|---|---|---|---|
| No compression | 1.4 MB | — | 35 |
| Minification | 180 KB | 48 KB (gzip) | 5 |
| Brotli | 180 KB | 40 KB | 5 |
Comparison of algorithms:
| Algorithm | Compression ratio | CPU load | Browser support |
|---|---|---|---|
| gzip (level 5) | 7–10x | Low | 99.9% |
| Brotli (level 6) | 8–12x | Medium | 95% (modern) |
What's Included in the Work
- Audit of resource inclusion: identify "direct" CSS/JS inserts that are not processed by Bitrix.
- Migrate all files to API:
AddCSSLink(),AddHeadScript(). - Enable built-in minification and merging in the admin panel.
- Configure gzip/Brotli on the server (nginx/Apache).
- Check for double compression and test on all pages.
- Prepare a before/after report.
Work Process
- Analysis—study template structure, resource inclusion methods, current server stack.
- Design—choose the optimal scheme (minification + gzip or Brotli, static compression).
- Implementation—make changes to nginx config, configure Bitrix, modify templates if needed.
- Testing—check HTTP headers, load speed (Lighthouse, WebPageTest), ensure no errors.
- Deployment—apply to production, monitor for one week.
Setup takes from 4 to 8 hours depending on legacy code volume. Order a speed audit—we'll identify bottlenecks and configure compression turnkey. We guarantee stable operation—all changes are reversible. We have over 5 years of experience optimizing Bitrix projects.
Useful links:

