Ответ 1
В REST клиенты инициируют запросы к серверам для ресурсов; серверы обрабатывают эти запросы и возвращают соответствующие ответы.
utm.gif не участвует в передаче данных между серверами, а вместо этого участвует в перемещении данных в другом направлении.
Конечно, у REST есть HTTP-методы для взаимодействия клиента с серверами (GET и POST), и действительно, Google Analytics направляет браузер клиента для отправки всех аналитических данных на серверы GA через GET-запрос. Точнее, запрос GET состоит из URL-адреса запроса и заголовков запросов (например, заголовков Referer и User-Agent).
Все данные GA - каждый элемент - собираются и упаковываются в строку запроса запроса URL-адреса (все после "?" ). Но для того, чтобы эти данные переходили от клиента (где он был создан) к серверу GA (где он регистрируется и агрегируется), должен быть HTTP-запрос, поэтому ga.js(google analytics script, который загружен, если он не кэшируется клиентом в результате функции, вызываемой при загрузке страницы) направляет клиента на сбор всех данных аналитики - например, куки, панель местоположений, заголовки запросов и т.д. - объединяет их в одну строку и добавить ее как строку запроса в URL-адрес ( http://www.google-analytics.com/__utm.gif?), и это станет URL-адресом запроса,
Конечно, не может быть HTTP-запрос без ресурса; поэтому ресурс - это клиент, запрашивающий с сервера? Он ничего не требует от сервера, вместо этого он хочет отправить информацию на сервер. Таким образом, фактический серверный ресурс, запрошенный клиентом, является чисто предтекстовым - ресурс даже не нужен клиенту, он только просил выполнить оператор протокола передачи. Поэтому имеет смысл сделать этот ресурс настолько малым и как можно более ненавязчивым, поэтому он представляет собой 1 x 1 прозрачный пиксель в формате gif. Это минимально возможный размер и наименьший формат изображения (байты/пиксель); Я думаю, что это чуть более 30 байт. Изображение 1 x 1 в других распространенных форматах (например, jpeg, png, tiff) больше.
Эта общая схема передачи данных между клиентом и сервером существует навсегда; вполне может быть лучший способ сделать это, но это единственный способ, которым я знаю (который удовлетворяет ограничениям, наложенным размещенной службой аналитики).
(у Google Analytics действительно есть два API: " Data Export" и "Management", которые являются и RESTful Web Services.)