[PT] – Padrões de URL no CDN

Padrões de URL no CDN

A infra-estrutura Planisys CDN usa uma variante Nginx especialmente adaptada para alto tráfego e velocidade de acesso ao cache através de memórias NVMe e sistema de arquivos ultra-rápido.

Para otimizar a aplicação de regras de cache, é essencial saber como os padrões são montados para identificar grupos de URLs, e isso é através de “expressões regulares”.

A especificação de expressões regulares corresponde a expressões regulares PCRE ou Perl-Compatible, podendo encontrar a documentação completa no site pcre.org.

Neste tutorial, explicaremos quais expressões regulares são válidas no Nginx. Podemos adicionar expressões para alguns cdn’s em particular. Clicando em um, iremos para ‘Configuração Geral‘ onde podemos adicionar as expressões. A seguir, na parte direita da janela, temos diferentes partes de configuração, procuramos por ‘Regras‘. É aqui que podemos criar regras diferentes com expressões regulares.

Como podemos ver na criação de alguma regra, temos que definir algumas ações, como cache, rederict e bypass. Onde diz padrão temos que escrever as expressões.

Expressões regulares

Expressões regulares são usadas para comparar / combinar o texto.
Abaixo estão alguns exemplos de regex já feitos. Mas, para entender como funciona a regex, existem algumas regras básicas a seguir:

  • ^ compare o começo da palavra ou uma nova linha.
  • Compare qualquer caractere menos as quebras de linha.
  • () agrupa diferentes tokens.
  • |  funciona como um or. Por exemplo, temos jpg | png, o valor a ser comparado tem que ser um deles, com o qual se cumpre, já é bom.
  • \w é igual a qualquer palavra.
  • { } é usado para definir valores de entrada.
  • [ ] define um conjunto de caracteres.
  • indica o final da palavra.
  • é usado para repetições, é igual a 0 a um lote.
  • igual a 1 para muitos.
  • é igual a entre 0 e 1 do token anterior.
  •  comparação

Com essas expressões básicas, elas já podem formar uma regex de qualquer tipo.

A seguir estão algumas regras que já foram descritas:

- ^.+.(jpg|jpeg|gif|png|ico|tgz|gz|rar|bz2|doc|exe|ppt|txt|tar|mid|midi|wav|bmp|rtf|swf|woff)$
- (.+)img.aspx(.*)
- jpg
- ^.+.(jpg|jpeg|png|gif)$
- /rss(.*)
- ^.+.(css|js)$
- ^.+.(css|assets|js)$
- ^.+.(js)$
- .+.(txt)$ 
- ^.+.(otf|woff2|woff)$
- /ads.txt$
- ^.+/static/(.*)(css|js|jpeg|gif|png|jpg|svg)$
- /wp-login(.*)
- /wp-admin(.*)
- /_post(.*)
- ^.+.(asp|aspx|php|html)$

Como você pode ver, esses são apenas exemplos coletados. Mas cada usuário pode formar sua regra. Por exemplo, se eu quiser comparar apenas com o formato de texto, o regex será txt.