Bitrix Site Speed: CSS/JS Compression Setup

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 compr

Our competencies:

Frequently Asked Questions

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

  1. Analysis—study template structure, resource inclusion methods, current server stack.
  2. Design—choose the optimal scheme (minification + gzip or Brotli, static compression).
  3. Implementation—make changes to nginx config, configure Bitrix, modify templates if needed.
  4. Testing—check HTTP headers, load speed (Lighthouse, WebPageTest), ensure no errors.
  5. 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: