تصغير كود CSS وقياس نسبة تقليل الحجم
تتضمن أوراق الأنماط المقروءة عادةً مسافات بادئة وفواصل أسطر وتعليقات توضيحية وفواصل منقوطة نهائية لا يحتاج إليها المتصفح.
شغّل الأداة مجانًا
تزيل أداة التصغير هذه عبء النقل الزائد، مع الحفاظ على النصوص بين علامتي اقتباس وترتيب المحددات والتصريحات وبنية القواعد. وتعيد كود CSS المضغوط وعدد بايتات UTF-8 قبل التصغير وبعده ونسبة الخفض. تعمل العملية بصورة حتمية ومن دون اتصال بالشبكة، وترفض المدخلات التي لا تتوازن فيها الأقواس المعقوفة.
ما الذي تزيله أداة التصغير
تركز أداة التصغير على التنسيق الذي لا يحتاج إليه المتصفح عند استلام ورقة الأنماط. فهي تحذف التعليقات الكتلية، وتضغط تتابع المسافات وفواصل الأسطر، وتزيل الفراغ حول علامات الترقيم البنيوية، وتحذف آخر فاصلة منقوطة قبل القوس المعقوف المغلق مباشرةً. ولا تعيد ترتيب القواعد، ولا تدمج المحددات، ولا تغيّر أسماء الخصائص المخصصة، ولا تختصر الألوان، ولا تعيد كتابة العمليات الحسابية. وهذا الحد المحافظ مهم لأن سلوك CSS يعتمد على ترتيب المصدر ودرجة التحديد والمحتوى الدقيق لبعض القيم. يجري فحص النصوص الواقعة بين علامتي اقتباس بصورة منفصلة، لذلك تبقى المسافات والأقواس وعلامات الترقيم والنصوص الشبيهة بالتعليقات داخل عنوان URL أو المحتوى المولّد كما هي. كما تُحترم علامات الاقتباس المهروبة. وتبقى المسافات الفاصلة بين الرموز حين يمكن أن يؤدي حذفها إلى دمج كلمتين أو قيمتين. استخدموا النتيجة مورداً مولداً، واحتفظوا بالأصل المقروء في نظام إدارة الإصدارات لأغراض الصيانة.
كيفية عمل التحقق والقياس
قبل إعادة النتيجة، يتتبع الماسح كل قوس معقوف فاتح ومغلق يظهر خارج التعليقات والنصوص بين علامتي اقتباس. يؤدي وجود قوس إغلاق بلا قوس فتح سابق، أو بقاء قوس فتح حتى نهاية المدخل، إلى خطأ مدخل غير صالح بدلاً من إعادة CSS جزئي. يكشف هذا الفحص مبكراً أخطاء النسخ واللصق الشائعة وأوراق الأنماط المبتورة. وترفض القدرة أيضاً CSS المفقود أو الفارغ والتعليقات غير المكتملة والنصوص غير المغلقة، لأن تصغير هذه المدخلات بصورة متوقعة غير ممكن. تُقاس الأحجام بوحدة بايت UTF-8 لا بعدد محارف JavaScript. ويهم هذا الفرق مع أسماء الخطوط غير المكتوبة بأحرف ASCII والمحتوى المولّد الموطّن ومحددات Unicode، إذ قد يشغل المحرف المرئي الواحد عدة بايتات أثناء النقل. تُحسب نسبة الخفض من عددي البايتات ثم تُقرّب إلى منزلتين عشريتين. ولأن الماسح الحتمي نفسه يعالج كل طلب من دون شبكة أو عشوائية أو ساعة أو حالة خارجية، فإن المدخل نفسه يعيد دائماً CSS نفسه والقياسات نفسها.
استخدام النتيجة في مسار التسليم
يحتفظ مسار العمل المعتاد بكود CSS المنسق بوصفه المصدر القابل للتحرير، ولا يصغّر إلا النسخة المخصصة لموقع أو حزمة تطبيق أو قالب بريد إلكتروني أو مضيف موارد ثابتة. أرسلوا ورقة الأنماط كاملة، واقرؤوا القيمة المضغوطة من الحقل css، ثم اكتبوها في ملف النشر. يمكن تسجيل الحقلين original_bytes وminified_bytes في سجلات البناء، بينما يقدم reduction_percent مقياساً مباشراً ومقروءاً للتوفير. ويمكن لمهمة التكامل المستمر مقارنة هذه القياسات بين الإصدارات لاكتشاف الزيادة غير المقصودة، لكن حدود الحجم ينبغي أن تعتمد على أعداد البايتات الدقيقة لا النسبة المقربة. الماسح أداة تصغير وليس مترجم CSS كاملاً؛ فهو لا يحل الاستيرادات، ولا يضيف بادئات الموردين، ولا يتحقق من كل خاصية، ولا يحول الصياغات الجديدة، ولا يدمج الملفات. نفذوا تلك التحويلات أولاً ثم صغّروا خرج CSS النهائي. إذا فشل تحقق الأقواس، صححوا المصدر أو أعيدوا توليده. تبلغ كلفة الأتمتة عبر API مقدار $0.002 لكل طلب.
حالات الاستخدام
إعداد ورقة أنماط للإنتاج
حوّلوا ورقة أنماط مقروءة ومشروحة إلى مورد نشر مضغوط، مع الاحتفاظ بالمصدر الأصلي لأغراض الصيانة.
قياس تحسين CSS
سجلوا أعداد بايتات UTF-8 الدقيقة ونسبة الخفض في تقرير البناء أو تقرير الأداء.
التحقق من بنية CSS المولّد
ارفضوا خرج المولّد المبتور قبل النشر عندما لا تكون الأقواس المعقوفة للقواعد متوازنة.
الأسئلة الشائعة
ما الذي تزيله أداة تصغير CSS؟
تزيل التعليقات الكتلية والمسافات غير الضرورية حول بنية CSS والفاصلة المنقوطة السابقة لكل قوس معقوف مغلق.
كم تبلغ كلفة طلب API؟
تبلغ كلفة كل طلب API مقدار $0.002.
كيف تُحسب نسبة الخفض؟
تُقارن أعداد بايتات UTF-8 الأصلية والمصغرة، ثم تُقرّب نسبة الخفض إلى منزلتين عشريتين.
ماذا يحدث عندما لا تكون الأقواس متوازنة؟
يفشل الطلب بخطأ مدخل غير صالح بدلاً من إعادة CSS ناقص أو قد يكون مضللاً.
هل تُحذف التعليقات أو تُحسب الأقواس داخل النصوص؟
لا. يُحفظ المحتوى بين علامتي اقتباس، ولا تؤثر أقواسه في التحقق البنيوي.
للمطوّرين — الوصول عبر API
كل ما في هذه الصفحة متاح برمجيًا. هذا القسم موجّه للفرق التقنية التي تريد ربط الأداة بأنظمتها الخاصة؛ بقية المستخدمين يمكنهم استخدام الأداة أعلاه مباشرة دون الحاجة لقراءة ما يلي.
الـEndpoint
صادِق على طلبك بترويسة Bearer، وأرسل طلب POST واحدًا لتدخل مهمتك قائمة التنفيذ فورًا؛ ثم تستلم النتيجة عبر webhook أو رابط موقّع.
استدعِ الخدمة من بيئتك
curl -X POST https://api.kit.forhosting.com/dev2/minify-css \
-H "Authorization: Bearer $KIT_KEY" \
-H "Content-Type: application/json" \
-d '{"css":"/* Theme */\n.card {\n color: red;\n padding: 1rem;\n}\n"}'const res = await fetch("https://api.kit.forhosting.com/dev2/minify-css", {
method: "POST",
headers: {
"Authorization": `Bearer ${process.env.KIT_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
"css": "/* Theme */\n.card {\n color: red;\n padding: 1rem;\n}\n"
})
});
const { task_id } = await res.json();import os, requests
res = requests.post(
"https://api.kit.forhosting.com/dev2/minify-css",
headers={"Authorization": f"Bearer {os.environ['KIT_KEY']}"},
json={
"css": "/* Theme */\n.card {\n color: red;\n padding: 1rem;\n}\n"
},
)
task_id = res.json()["task_id"]<?php
$res = file_get_contents("https://api.kit.forhosting.com/dev2/minify-css", false, stream_context_create([
"http" => [
"method" => "POST",
"header" => "Authorization: Bearer " . getenv("KIT_KEY") . "\r\nContent-Type: application/json",
"content" => '{"css":"/* Theme */\\n.card {\\n color: red;\\n padding: 1rem;\\n}\\n"}',
],
]));
$task = json_decode($res, true);body := bytes.NewBufferString(`{"css":"/* Theme */\n.card {\n color: red;\n padding: 1rem;\n}\n"}`)
req, _ := http.NewRequest("POST", "https://api.kit.forhosting.com/dev2/minify-css", body)
req.Header.Set("Authorization", "Bearer "+os.Getenv("KIT_KEY"))
req.Header.Set("Content-Type", "application/json")
res, _ := http.DefaultClient.Do(req)مثال على الطلب
{
"css": "/* Theme */\n.card {\n color: red;\n padding: 1rem;\n}\n"
}مثال على الاستجابة
{
"task_id": "tsk_a1b2c3d4e5f6a1b2c3d4e5f6",
"type": "dev2.minify_css",
"status": "queued",
"_links": {
"result": "/tasks/tsk_…/result"
}
}الواجهة غير متزامنة: تستلم task_id فور الإرسال، ويمكنك الاستعلام عن الحالة بمعدل طلب واحد في الثانية.
الأسعار
السعر معلن كما تراه: لا tokens ولا نظام نقاط؛ وإن فشلت المهمة فلن تُحاسَب عليها.
الأخطاء
| HTTP | الرمز | المعنى |
|---|---|---|
401 | unauthorized | مفتاح الوصول مفقود أو غير صالح؛ تحقق من ترويسة Bearer في طلبك. |
402 | insufficient_balance | رصيدك لا يكفي لتنفيذ هذه المهمة؛ أعد شحن الرصيد ثم أعد المحاولة. |
404 | unknown_type | نوع المهمة المطلوب غير موجود في الكتالوج — راجع الاسم المرسل في الطلب. |
429 | rate_limited | تجاوزت الحد المسموح من الطلبات؛ انتظر قليلًا ثم أعد المحاولة. |