Как считается трафик с оплатой за ГБ
В прокси с оплатой за ГБ (PPG) оплачивается трафик между вашим клиентом и хабом Litport. На этой странице описано, что учитывается, что происходит при раннем отключении и как сократить оплачиваемый трафик. Страница относится к TCP-соединениям через HTTP CONNECT и SOCKS5 без режима кеша.
Что считается трафиком#
Litport считает каждый байт, которым обмениваются ваш клиент и хаб, в обоих направлениях, пока соединение открыто.
| Часть соединения | Учитывается |
|---|---|
Рукопожатие прокси: запрос и ответ CONNECT или согласование SOCKS5 |
Да |
| TLS-рукопожатие и накладные расходы на TLS-записи, включая TLS до самого прокси | Да |
| Ваш запрос, включая тело с отправляемыми данными | Да |
| Ответ | Да, в том объёме, который хаб успел отправить вам |
Оплачивается ли отправка данных (upload)?#
Да. Отправка (upload) и получение (download) оплачиваются одинаково, байт за байтом.
Оплачиваются ли накладные расходы TLS?#
Да. TLS-рукопожатие и обрамление записей — это байты, прошедшие через хаб. См. во что обходится прокси https://.
Есть ли минимум на запрос?#
Нет. Трафик оплачивается в точных байтах по токену и часу, без минимума на запрос и без округления вверх.
Что с режимом кеша?#
Когда режим кеша включён, хаб сам читает ваши HTTPS-запросы. Попадания в кеш бесплатны; промахи и обходы кеша оплачиваются, как описано в разделе Параметры кеша и устранение неполадок. Остальная часть страницы относится к трафику без режима кеша.
Оплачивается ли запрос, который я отменил?#
Вы платите за то, что было передано до вашего отключения, а не за весь ответ. Когда клиент закрывает соединение, хаб завершает туннель и закрывает своё соединение с апстримом. Байты, которые хаб уже отправил в вашу сторону, всё равно учитываются, даже если клиент их так и не прочитал: к моменту закрытия они были в пути или в буферах.
Раннее отключение даёт наибольшую экономию на больших ответах и более медленных соединениях. На быстром соединении значительная часть небольшого ответа может быть уже в пути к моменту отключения.
Результаты измерений#
Мы тестировали через один хаб, с HTTP CONNECT, SOCKS5 и TLS до прокси, на двух резидентских пулах и одном серверном пуле. Значения — медианы на запрос, включая неудавшиеся запросы. Ваши значения зависят от размера ответа, скорости и вашего клиента.
| Что делал клиент | Запросов | Оплачено, медиана на запрос |
|---|---|---|
| Прочитал тело целиком, 220 КБ | 290 | 230 КБ; 235 КБ при TLS до прокси |
| Отключился примерно после 50 КБ тела размером 220 КБ, резидентские пулы | 1,160 | 86–95 КБ |
| То же с медленным телом (220 КБ передавались за 5 секунд) | 1,100 | 56 КБ |
| Отключился примерно после 50 КБ тела размером 2 МБ или 5 МБ, резидентские пулы | 200 | 76–85 КБ |
| Отключился примерно после 50 КБ тела размером 220 КБ, серверный пул | 30 | 192 КБ |
| Перестал читать примерно после 50 КБ, но держал соединение открытым 20 секунд | 30 | 230 КБ |
| Отключился через 3 секунды после отправки запроса, ответ на который приходил через 10 секунд | 630 | 5.8–5.9 КБ |
| Отключился сразу после TLS-рукопожатия | 600 | 5.8 КБ |
Как сократить оплачиваемый трафик#
- Отключайтесь, как только получили нужное. Считайте полученные байты, а не размер после распаковки.
- Закрывайте соединение с прокси. Если просто перестать читать данные в приложении, передача и оплата не прекращаются; см. результаты выше.
- Не возвращайте досрочно прерванное соединение в пул keep-alive.
- Если вы отключаетесь до получения какого-либо ответа, вы платите примерно за рукопожатие и запрос, как в тесте с задержкой ответа выше. Ответ, который уже в пути к моменту отключения, учитывается. Litport не может сообщить, получил или обработал ли сайт запрос, который ещё находился в пути.
- В браузере отмена запроса может оставлять соединение с прокси открытым. Прежде чем на это полагаться, измерьте оплачиваемый трафик в своей конфигурации.
- Отдавайте повторяющиеся статические файлы из кеша статических ответов и блокируйте ненужные изображения, медиа и шрифты.
- Проверяйте результат по каждому токену в разделе «Статистика трафика».
Пример на Node.js#
Этот код закрывает туннель, как только получено 50 КБ ответа. В наших тестах это оплачивалось около 94 КБ, а чтение всего ответа — около 230 КБ. 94 КБ больше 50 КБ, потому что в эту сумму входят ещё TLS-рукопожатие, запрос и заголовки (около 7 КБ), а также данные, которые уже были в пути к моменту закрытия туннеля.
import https from 'node:https'
import { HttpsProxyAgent } from 'https-proxy-agent'
const agent = new HttpsProxyAgent('http://USERNAME:[email protected]:1337')
const req = https.get('https://example.com/page', { agent }, (res) => {
let received = 0
res.on('data', (chunk) => {
received += chunk.length
if (received >= 50_000) req.destroy() // closes the tunnel; counting stops here
})
})
req.on('error', () => {})