Contar cliques sem ler o texto da ligação
Um contador responde a «quantos vieram». A pergunta mais útil costuma ser «quantos fizeram alguma coisa» — carregaram na ligação de contacto, abriram a descarga, saíram para um perfil social. Este serviço tem eventos para isso desde que foram construídos: ponha data-s4u-event="contacto" num elemento e os cliques nele são contados com esse nome.
Quase ninguém o usava, porque quase ninguém sabia. Há por isso agora uma caixa: contar automaticamente os cliques nas ligações, sem atributos. O interessante não é o interruptor. É como se chama aquilo que é contado.
O texto da ligação não
O nome óbvio para um clique são as palavras em que o visitante carregou. É também o errado.
O texto de uma ligação é conteúdo livre. Uma ligação pode dizer «Encomenda 4711» ou «Mensagem da Ana», pode levar um número de porta, uma referência de reserva, um endereço de correio. Tudo isso iria parar a uma coluna de base de dados chamada name e ficaria lá. A política de privacidade deste serviço diz que as estatísticas não contêm dados pessoais, e isso tem de continuar verdadeiro sem depender do que um dono de sítio escreva dentro de uma etiqueta de ligação.
Há um segundo problema, menor mas real: vinte ligações a dizer «aqui» numa página são um nome que não diz nada, e a mesma ligação em onze traduções seriam onze nomes dos cinquenta a que um contador tem direito.
O nome vem por isso do caminho de destino. Foi o dono do sítio que o escolheu, é estável, e já é a chave que as estatísticas de páginas usam.
Três normalizações, cada uma por um motivo
- Prefixo de língua removido.
/de/bloge/pl/blogsão a mesma página. Sem isto, só o seletor de língua de um sítio multilingue consumiria onze dos cinquenta nomes. - Sequências de cinco ou mais algarismos passam a
n. Duas páginas de estatísticas com números de contador diferentes não são duas páginas; são duas vezes a mesma. - As ligações que saem do sítio passam a
ex-mais o anfitrião. O caminho de uma página alheia não diz nada ao dono. Para onde foi o clique, diz.
Âncoras, mailto:, tel: e javascript: são ignorados — não são destinos para os quais alguém precise de um número. Os elementos que já levam o seu próprio nome de evento também são ignorados, senão o mesmo clique seria contado duas vezes.
Quanto custa
O script no navegador cresceu 1 022 bytes comprimidos, uma vez por primeira visita. Mais nada: o indicador viaja num pedido que o script já faz em cada carregamento de página — um pedido que até agora respondia sempre a mesma constante — portanto não há uma segunda viagem. No servidor, a lista de contadores com o interruptor ligado vive num ficheiro pequeno em vez de numa consulta, porque essa consulta é uma varredura completa de 166 433 linhas e custa 143,9 milissegundos medidos.
Por omissão está desligado, e assim fica. A este volume, ligá-lo em todo o lado acrescentaria cerca de nove mil escritas por dia à tabela mais escrita que aqui existe. É uma coisa que se liga, não uma coisa que nos acontece.