תארו לעצמכם: האתר שלכם נטען תוך 5 שניות, אבל 80% מהזמן מושקע בהעברת חבילות JavaScript. כבר מיטבתם תמונות, הפעלתם מטמון, אבל המהירות כמעט לא השתפרה. סביר להניח שפספסתם דחיסה ברמת התעבורה. אנו מגדירים Gzip ו-Brotli על השרת, ומקטינים את גודל התוכן פי 3–10 ללא שינויי קוד. חיסכון בתעבורה יכול להגיע ל-70% עם Brotli — הפחתת עלויות אחסון ו-CDN.
Brotli מספק דחיסה טובה יותר ב-15–25% מ-Gzip בעומס CPU דומה. אחד הפרויקטים שלנו — חנות מקוונת עם חבילה של 1.2 MB. לאחר הפעלת Brotli עם נכסים סטטיים דחוסים מראש, הגודל ירד ל-280 KB, ו-LCP ירד מ-4.2 שניות ל-1.8 שניות. עבור קבצים סטטיים אנו משתמשים בנכסים דחוסים מראש — קבצי .gz ו-.br נוצרים בזמן הבנייה, והשרת מגיש אותם ללא דחיסה חוזרת. זה חוסך עד 30% מזמן ה-CPU בעומסי שיא.
למה Brotli עדיף על Gzip?
Brotli משתמש במילון עבור HTML/JS/CSS, מה שמאפשר אריזה הדוקה יותר. לדוגמה, app.js 500 KB נדחס ל-130 KB (Brotli) לעומת 150 KB (Gzip). ההבדל בולט במיוחד ברשתות סלולריות עם רוחב פס מוגבל. בנוסף, Brotli תומך ברמות דחיסה עד 11, מה שמאפשר דחיסה מקסימלית עבור נכסים סטטיים בזמן הבנייה. עם זאת, לדחיסה בזמן אמת, רמות גבוהות (9–11) מעמיסות מאוד על ה-CPU, ולכן רמה 6 מומלצת לתוכן דינמי.
| פרמטר | Gzip | Brotli |
|---|---|---|
| אלגוריתם | Deflate | LZ77 + מילון |
| רמה מקסימלית | 9 | 11 |
| דחיסה ממוצעת (HTML) | פי 4 | פי 5 |
| תמיכת דפדפנים | 100% | ~95% |
איך למזער עומס CPU בזמן דחיסה?
השיטה העיקרית היא שימוש בנכסים סטטיים דחוסים מראש. קבצי .gz ו-.br נוצרים פעם אחת במהלך בניית הפרויקט (למשל, באמצעות vite-plugin-compression), והשרת מגיש אותם ישירות, וחוסך זמן CPU על כל בקשה. עבור תוכן דינמי (HTML, JSON), אנו מיישמים דחיסה בזמן אמת ברמה 6 — איזון בין יחס דחיסה לעומס. בשעות שיא, ניתן להשבית דחיסה עבור קבצים גדולים באמצעות ההנחיה gzip_min_length 256. ניטור CPU מאפשר התאמה בזמן אמת של רמות הדחיסה — אם העומס עולה על 80%, שקלו להוריד את הרמה או להגדיל את gzip_min_length. הפחתת עומס CPU מורידה את עלויות משאבי השרת.
Nginx: Gzip + Brotli
# /etc/nginx/nginx.conf или /etc/nginx/conf.d/compression.conf
# Gzip — поддерживается везде
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_comp_level 6; # 1-9, баланс CPU/сжатие; 6 — хорошая точка
gzip_min_length 256; # не сжимать очень маленькие файлы
gzip_types application/javascript application/json application/xml application/rss+xml image/svg+xml text/css text/html text/javascript text/plain text/xml font/woff font/woff2;
# Brotli — нужен модуль ngx_brotli
# Установка: apt install libnginx-mod-brotli
brotli on;
brotli_comp_level 6;
brotli_types application/javascript application/json text/css text/html text/plain image/svg+xml font/woff2;אימות:
curl -H "Accept-Encoding: br" -I https://example.ru/ # Ответ должен содержать: Content-Encoding: br
curl -H "Accept-Encoding: gzip" -I https://example.ru/ # Ответ: Content-Encoding: gzip
נכסים סטטיים דחוסים מראש
עבור קבצים סטטיים (JS, CSS, חבילות) — צרו קבצי # /etc/nginx/nginx.conf или /etc/nginx/conf.d/compression.conf # Gzip — поддерживается везде gzip on; gzip_vary on; gzip_proxied any; gzip_comp_level 6; # 1-9, баланс CPU/сжатие; 6 — хорошая точка gzip_min_length 256; # не сжимать очень маленькие файлы gzip_types application/javascript application/json application/xml application/rss+xml image/svg+xml text/css text/html text/javascript text/plain text/xml font/woff font/woff2; # Brotli — нужен модуль ngx_brotli # Установка: apt install libnginx-mod-brotli brotli on; brotli_comp_level 6; brotli_types application/javascript application/json text/css text/html text/plain image/svg+xml font/woff2; ו-curl -H "Accept-Encoding: br" -I https://example.ru/ # Ответ должен содержать: Content-Encoding: br curl -H "Accept-Encoding: gzip" -I https://example.ru/ # Ответ: Content-Encoding: gzip בזמן הבנייה, והגישו ישירות. ללא עומס CPU לכל בקשה:
// vite.config.ts
import { defineConfig } from 'vite';
import viteCompression from 'vite-plugin-compression';
export default defineConfig({
plugins: [
viteCompression({
algorithm: 'gzip',
ext: '.gz'
}),
viteCompression({
algorithm: 'brotliCompress',
ext: '.br'
}),
]
});
# Nginx: отдавать pre-compressed файлы
location ~* \.(js|css|woff2)$ {
gzip_static on; # ищет .gz версию
brotli_static on; # ищет .br версию (модуль ngx_brotli)
expires 1y;
add_header Cache-Control "public, immutable";
} איך לוודא שהדחיסה עובדת?
השתמשו ב-.gz או בכרטיסיית Network בכלי הפיתוח. התשובה צריכה לכלול כותרת .br או // vite.config.ts import { defineConfig } from 'vite'; import viteCompression from 'vite-plugin-compression'; export default defineConfig({ plugins: [ viteCompression({ algorithm: 'gzip', ext: '.gz' }), viteCompression({ algorithm: 'brotliCompress', ext: '.br' }), ] }); . כמו כן, בדקו את # Nginx: отдавать pre-compressed файлы location ~* \.(js|css|woff2)$ { gzip_static on; # ищет .gz версию brotli_static on; # ищет .br версию (модуль ngx_brotli) expires 1y; add_header Cache-Control "public, immutable"; } — היא אומרת לשרתי מטמון שהתוכן תלוי בקידוד. לאבחון שלב-אחר-שלב, ניתן להשתמש בשירותים מקוונים, כמו כלים לבדיקת כותרות.
אם הלקוח לא תומך ב-Brotli, Nginx נופל אוטומטית ל-Gzip או לתוכן לא דחוס. ודאו שההנחיה curl מופעלת — זה מבטיח מנגנון גיבוי. שימוש ב-CDN עם תמיכת Brotli מאיץ עוד יותר את העברת התוכן ומפחית את העומס על שרת המקור.
תוצאות דחיסה אופייניות
| קובץ | מקורי | Gzip | Brotli |
|---|---|---|---|
| app.js | 500 KB | 150 KB | 130 KB |
| app.css | 80 KB | 18 KB | 15 KB |
| דף HTML | 50 KB | 12 KB | 10 KB |
רמות דחיסה: המלצות
רמות 1–3 — עומס CPU נמוך, דחיסה חלשה. 4–6 — מאוזן. 7–9 — דחיסה גבוהה, אבל ה-CPU גדל באופן לא ליניארי: רמה 9 לוקחת פי 3 יותר זמן מרמה 6. עבור קבצים דחוסים מראש, השתמשו ברמה 11 (Brotli בלבד) — נדחס פעם אחת בזמן הבנייה.
Apache
# .htaccess
<IfModule mod_deflate.c>
AddOutputFilterByType DEFLATE text/html text/css application/javascript
AddOutputFilterByType DEFLATE application/json image/svg+xml font/woff2
</IfModule> תהליך הגדרת הדחיסה
- ניתוח תצורת השרת הנוכחית (Nginx/Apache).
- בחירת רמות דחיסה (Gzip 6, Brotli 6 — מאוזן).
- הגדרת חריגים (פורמטים שאינם ניתנים לדחיסה: PNG, JPEG, MP4).
- יצירת קבצים דחוסים מראש בבנייה (Vite, Webpack).
- אימות כותרות תשובה (Content-Encoding, Vary).
- ניטור עומס CPU.
מה כלול בעבודה
- הגדרת Gzip ו-Brotli על השרת (Nginx/Apache).
- הגדרת נכסים סטטיים דחוסים מראש (אם משתמשים ב-bundler).
- אימות כותרות ובדיקת דחיסה.
- תיעוד השינויים שבוצעו.
- המלצות לרמות דחיסה בהתאם לתעבורה שלכם.
המהנדסים שלנו מגדירים דחיסה כבר למעלה מ-5 שנים — מיטבנו את מהירות הטעינה ל-100+ פרויקטים, והפחתנו את LCP ו-TTFB ב-40–60%. רוצים את אותו הדבר? צרו קשר — נבצע ביקורת וניישם דחיסת Gzip ו-Brotli ביום אחד. הזמינו הגדרת דחיסה וקבלו ייעוץ להאצת האתר שלכם היום.







