بروتوكول HTTP/1.1 كان يفتح حفنة اتّصالات ويرسل طلبًا واحدًا في كل مرّة على كلٍّ منها، فكان كل ملفّ إضافيّ يكلّف مكانًا في الطابور. أمّا HTTP/2 فيرسلها كلّها على اتّصال واحد دفعةً واحدة، وهذا التغيير وحده يجعل عدّة تحسينات قديمة بلا معنى أو ضارّة.

شغّله

listen 443 ssl;
http2 on;

يتطلّب TLS في كل متصفّح، فهو يأتي مع الشهادة التي عندك أصلًا. ولا شيء آخر يحتاج إلى تغيير.

ما يكفّ عن الصحّة

دمج كل السكربتات في ملفّ واحد، وأوراق الصور المجمّعة، وُجدت لتقليل عدد الطلبات. وتحت HTTP/2 لا يكلّف ذلك العدد شيئًا تقريبًا — بل إن حزمةً كبيرة واحدة تعني أن تغيير سطر يُبطل كل شيء لكل زائر.
  • أرسل عدّة ملفّات صغيرة تُخبَّأ كلٌّ منها على حدة.
  • ولا توزّع على نطاقات متعدّدة — كانت وسيلةً لزيادة الاتّصالات المتوازية، وصارت الآن تكلّف مصافحةً إضافية لكل نطاق.
  • ولا تُضمّن داخل الصفحة إلّا ما يحتاجه الرسم الأوّل حقًّا.

HTTP/3

listen 443 quic reuseport;
add_header Alt-Svc 'h3=":443"; ma=86400';

يعمل HTTP/3 فوق UDP. ومكسبه الحقيقيّ على الشبكات غير الموثوقة — وشبكات الهاتف خاصّة — حيث لم تعد حزمةٌ ضائعة تُعطّل كل ما عداها على الاتّصال.

وافحص أيّهما تقدّم

curl -sI --http2 https://yourdomain.com | head -1
curl -sI --http3 https://yourdomain.com | head -1
ولا واحد منهما يجعل صفحةً بطيئة سريعة. فإن كان زمن أوّل بايت ٩٠٠ مِلّي ثانية فالبروتوكول ليس المشكلة، والانتقال إلى HTTP/3 لن يغيّر شيئًا تحسّه.