Comments 6
Вы лучше напишите как разрабатывали и с какими трудностями сталкивались.
Спасибо за ваш вопрос! Для сжатия использовал библиотеку pako. Код очень простой:
import pako from 'pako'
function compress(str) {
const compressed = pako.deflate(str, { to: 'string' })
return btoa(compressed.reduce((data, byte) => data + String.fromCharCode(byte), ''))
}
function decompress(compressedStr) {
return pako.inflate(atob(compressedStr).split('').map(char => char.charCodeAt(0)), { to: 'string' })
}
export { compress, decompress }
Строка с кодом сжимается и кодируется в base-64 и обратно. Проблем особых не было.
Ссылка на проект https://github.com/kossyak/papakha
А у последних популярных браузеров какие ограничения реальные на длину. Также интересно какие лимиты в сервисах сокращения юрл. Vk cc например. Они получается будут использованны как бд для кода )
Internet Explorer - 2083 символа
Chrome и Firefox - 32 767 символа
Safari и Opera - 8000 символов
Спецификация HTTP не определяет максимальную длину URL-адреса, она определяется ограничениями реализации браузеров.
По поводу сервисов сокращения ссылок, я думаю это число очень большое(условно можно сказать, что без ограничений).
Но если нужно хранить код по ссылки, то лучше подойдут сервисы CDN)
Я тоже знаю про ограничения в 2000 символов, но было бы интересно если вы в статье привели анализ ограничений для разных браузеров. Потому что насколько знаю многие браузеры игнорирую это ограничение. Ну и возможно имело бы смысл использовать альтернативный источник хранения для повышения количества кода, например урл хэш.
Такие статьи уже есть. Вот актуальная информация одной из таких:
Internet Explorer - 2083 символа
Chrome и Firefox - 32 767 символа
Safari и Opera - 8000 символов
Спецификация HTTP не определяет максимальную длину URL-адреса, она определяется ограничениями реализации браузеров.
Хэшем url зовется всё, что идет после символа #, поэтому немного не понял про повышения количества кода (зачем добавлять лишний символ).
По поводу альтернативных источников хранения. Задача состоит не в хранение, а обмене кодом, с помощью ссылки.
А так, если нужно хранить данные на стороне клиента, то можно использовать localStorage:
Google Chrome, Mozilla Firefox, Opera: Примерно 10 МБ.
Internet Explorer: Порядка 10 МБ на хранилище.
Firefox (значение по умолчанию для домена): Ограничен до 5120 КБ.
Минималистичная JavaScript песочница