طريقة الضغط بدون فقدان لتقصير السلسلة قبل ترميز BASE64 لجعلها أقصر؟
-
30-09-2019 - |
سؤال
فقط بنيت شبكة ويب صغيرة لمعاينة الوسياسات HTML التي تنشئ عناوين URL: S التي تحتوي على HTML (وجميع CSS و JavaScript المضمّن) في البيانات المشفرة BASE64. المشكلة هي ، عنوان URL: S بسرعة طويلة نوعا ما. ما هي الطريقة القياسية "الفعلي" (يفضل بواسطة جافا سكريبت) لضغط السلسلة أولاً دون فقدان البيانات؟
ملاحظة؛ قرأت عن هوفمان وليميل زيف في المدرسة منذ بعض الوقت ، وأتذكر أنني أستمتع حقًا بـ LZW :)
تعديل:
تم العثور على الحل. يبدو مثل Rawstr => utf8str => lzwstr => base64str هو الطريق للذهاب. أنا أعمل أيضًا على تنفيذ ضغط Huffman بين UTF8 و LZW. المشكلة حتى الآن هي أن الكثير من الساحات تصبح طويلة جدًا عند ترميزها إلى Base64.
المحلول
الدفع هذا الجواب. يذكر وظائف لضغط/إلغاء الضغط LZW (عبر http://jsolait.net/, ، خاصة http://jsolait.net/browser/trunk/jsolait/lib/codecs.js).
نصائح أخرى
سوف تكافح من أجل الحصول على ضغط كبير على الإطلاق على عنوان URL ، فهي قصيرة جدًا ولا تحتوي على معلومات زائدة كافية للحصول على استفادة كبيرة من خوارزميات نمط Huffman / LZW.
إذا كان لديك قيود على مساحة عناوين URL المحتملة (على سبيل المثال ، تميل جميع المحتوى إلى نفس المجموعة من المجلدات) ، فيمكنك رمز بعض أجزاء عناوين URL للتوسع على العميل - أي الغش.