As regras de chave de cache personalizada geram chaves de cache a partir de partes específicas de uma requisição HTTP, como a URI, os parâmetros de requisição, os cabeçalhos HTTP ou variáveis personalizadas. Ao consolidar requisições para o mesmo recurso em uma chave de cache uniforme, esse recurso melhora a taxa de acerto do cache, reduz as requisições à origem e diminui o tempo de resposta e o consumo de largura de banda.
Comparação e seleção de recursos
Conflito entre a chave de cache personalizada e Ignore parameters: Ao configurar a filtragem de parâmetros e uma chave de cache personalizada ao mesmo tempo, a filtragem de parâmetros torna-se inválida.
-
O recurso de chave de cache personalizada oferece um controle mais refinado; portanto, recomenda-se o seu uso em vez da filtragem de parâmetros. A tabela a seguir compara os dois recursos.
Caso de uso
Filtragem de parâmetros
Chave de cache personalizada
Ignorar todos os parâmetros de requisição na chave de cache
defina Ignore Parameters como Yes e deixe o campo Retain Specified Parameters em branco.
Adicione uma regra de parâmetro de requisição. defina Action como Reserve e defina Parameter Name como um nome de parâmetro inexistente, como
example-argument.Reter apenas o parâmetro de requisição
key1na chave de cachedefina Ignore Parameters como Yes e defina Retain Specified Parameters como
key1.Adicione uma regra de parâmetro de requisição. defina Action como Reserve e defina Parameter Name como
key1.Remover apenas o parâmetro de requisição
key1da chave de cachedefina Remove Specified Parameters como
key1.Adicione uma regra de parâmetro de requisição. defina Action como exclua e defina Parameter Name como
key1. Reescrever parâmetros de origem: O recurso de chave de cache personalizada modifica apenas a chave de cache e não altera a URL para a requisição à origem. A requisição à origem permanece igual à requisição do cliente. Para modifique os parâmetros da requisição enviada à origem, use Rewrite origin parameters.
Limpar cache: Após configurar uma chave de cache personalizada, uma tarefa de purge by URL pode não localizar o conteúdo em cache. Para garantir uma limpeza bem-sucedida, use a chave de cache final gerada pelas suas regras como alvo da limpeza.
Casos de uso
Uma chave de cache é um identificador exclusivo para um arquivo em cache em um ponto de presença (POP) da CDN. Cada arquivo em cache possui uma chave de cache correspondente. Por padrão, a chave de cache é a URL da requisição do cliente, incluindo quaisquer parâmetros. O recurso de chave de cache personalizada não modifique a URL para a requisição à origem, alterando apenas a chave de cache. A requisição à origem permanece igual à requisição original do cliente.
A CDN foi projetada para acelerar recursos estáticos e não oferece suporte à aceleração de API dinâmica. O recurso de chave de cache personalizada otimiza as estratégias de cache para recursos estáticos, como a padronização de parâmetros de URL ou a diferenciação entre clientes, e não é adequado para cenários de cache de API dinâmica. Para aceleração de conteúdo dinâmico, considere o uso de Edge Security Acceleration (ESA).
Caso de uso 1: Consolidar requisições
Diferentes requisições do cliente geralmente incluem parâmetros variados na URL. Mesmo que várias requisições tenham como alvo o mesmo arquivo, os POPs da CDN tratam requisições com parâmetros de URL diferentes como arquivos separados. Isso resulta em várias cópias em cache e requisições adicionais à origem.
Use regras de chave de cache personalizada para unificar a chave de cache dessas requisições e reduzir a taxa de requisições à origem.
Caso de uso 2: Diferenciar requisições
Quando as requisições do cliente compartilham a mesma URL, a CDN as trata como requisições para o mesmo arquivo. No entanto, pode ser necessário fornecer conteúdos diferentes com base em um campo client no cabeçalho HTTP que identifica diferentes sistemas clientes.
Nesse caso, anexe o valor do cabeçalho client à chave de cache por meio de uma regra de chave de cache personalizada. Isso crie uma chave de cache distinta para cada tipo de cliente.
Procedimento
Faça login no console da CDN.
Na página Domain Names, encontre o nome de domínio de destino e clique em Manage na coluna Actions.
No painel de navegação à esquerda, escolha Cache.
-
Na aba Custom Cache Key, clique em Create Rule para definir os seguintes parâmetros:
Rule Condition
Uma Rule Condition identifica requisições com base em vários parâmetros para determinar se uma configuração se aplica a uma requisição específica. Se uma regra usar uma Rule Condition, a prioridade da Rule Condition determina a ordem de execução, e não a definição de prioridade do recurso.
Não usar: A chave de cache personalizada se aplica a todas as requisições sem uma Rule Condition.
Para adicionar ou edite uma Rule Condition: gerencie-a no Rules Engine. Para mais informações, consulte Rule Conditions e Rules Engine.
URIs
Quando a URI de uma requisição do cliente corresponde à Source URI na configuração, o sistema a substitui pela Final URI configurada para gerar a chave de cache. configure várias políticas de substituição de URI. As políticas são verificadas sequencialmente de cima para baixo. Assim que houver correspondência com uma Source URI, o sistema aplica a Final URI correspondente e interrompe a verificação das políticas subsequentes.
Source URI: Uma URI que começa com uma barra (
/) e não inclui o prefixohttp://ou o nome de domínio. Suporta expressões regulares PCRE.Final URI: Uma URI que começa com uma barra (
/) e não inclui o prefixohttp://ou o nome de domínio.
Request Parameter
As operações são aplicadas aos parâmetros da URL de requisição original. Realize as operações Add, Delete, Modify e Reserve. O resultado é anexado à chave de cache. Ao configurar várias operações, elas são executadas sequencialmente de cima para baixo.
Add: Anexa um novo parâmetro de requisição à chave de cache. Por exemplo, se a URL original for
http://image.example.com/cat.jpge você adicionar o parâmetrotype=jpg, a chave de cache passa a serhttp://image.example.com/cat.jpg?type=jpg.Delete: Remove o parâmetro especificado da URL de requisição original ao gerar a chave de cache. Por exemplo, se a URL original for
http://image.example.com/cat.jpg?type=jpge você exclua o parâmetrotype, a chave de cache passa a serhttp://image.example.com/cat.jpg.Modify: Altera o valor de um parâmetro especificado na URL de requisição original ao gerar a chave de cache. Por exemplo, se a URL original for
http://image.example.com/cat.jpg?type=jpge você modifique o parâmetro paratype=png, a chave de cache passa a serhttp://image.example.com/cat.jpg?type=png.Reserve: Retém apenas os parâmetros especificados da URL de requisição original ao gerar a chave de cache. Todos os outros parâmetros são removidos. Por exemplo, se a URL original for
http://image.example.com/cat.jpg?type=jpg&path=imagee você reservar o parâmetrotype, a chave de cache passa a serhttp://image.example.com/cat.jpg?type=jpg.
HTTP Headers
Anexa os valores dos cabeçalhos HTTP especificados da requisição original do cliente à chave de cache. especifique vários nomes de cabeçalho, separados por espaços. Os valores são anexados na ordem em que os cabeçalhos são especificados. Por exemplo, se a URL original for
http://image.example.com/cat.jpge a requisição do cliente contiver um cabeçalho HTTPpath:image, definirpathno campo HTTP Headers produz a chave de cachehttp://image.example.com/cat.jpgimage.Custom Variables
Adiciona valores de variáveis personalizadas à chave de cache gerada para melhorar a flexibilidade do cache. Uma variável personalizada consiste nos seguintes parâmetros:
Variable name: Um nome personalizado para a variável.
-
source: Um valor de campo presente na requisição do cliente. Os seguintes tipos de origem estão disponíveis:
Query String Parameter: A string de consulta na URL da requisição.
Request Header: Um cabeçalho presente na requisição do cliente.
Path: O caminho do recurso na URL da requisição.
Scheme: O protocolo usado pela URL da requisição. Oferece suporte a HTTP e HTTPS.
-
source field: Necessário apenas para os tipos de origem Query String Parameter, Request Header e Request Cookie. especifique uma das seguintes opções:
O nome de um parâmetro especificado na string de consulta.
O nome de um cabeçalho de requisição especificado.
Match rule: Uma expressão regular que corresponde a uma string específica no valor do campo de origem.
Variable expression: Gera o valor final da variável. Oferece suporte a strings fixas e referências de grupos de captura, como
$1, que referencia o conteúdo capturado pelo primeiro grupo entre parênteses.
clique em OK.
Exemplos de configuração
URIs
As requisições para http://aliyundoc.com/a/b/image.jpg e http://aliyundoc.com/a/b/c/image.jpg são tratadas como requisições para o mesmo arquivo. A chave de cache para esse arquivo é http://aliyundoc.com/c/image.jpg. configure as seguintes regras de reescrita de URI: reescreva a source URI /a/b para a Final URI /c e reescreva a source URI /a/b/c para a Final URI /c. clique em + Add source URI para adicionar regras de reescrita, ou clique em exclua para remover regras existentes.
Request Parameter
Uma requisição do cliente para http://aliyundoc.com/a/b/image.jpg?delete_par=1&modify_par=1 é processada da seguinte forma: add_par=1 é adicionado, exclua delete_par e modifique o valor de modify_par para 2. A chave de cache resultante é http://aliyundoc.com/a/b/image.jpg?modify_par=2&add_par=1.
Se várias operações tiverem como alvo o mesmo parâmetro de requisição, a ordem de prioridade é: Add > exclua > Reserve > modifique.
A ação exclua suporta apenas um único nome de parâmetro. Para exclua vários parâmetros, clique em + Add Parameter Operation para adicionar uma regra exclua separada para cada parâmetro.
HTTP Headers
Os valores dos cabeçalhos User-Agent e Accept-Language de uma requisição do cliente são anexados à chave de cache. Por exemplo, se uma requisição para http://aliyundoc.com/a/b/image.jpg contiver os cabeçalhos User-Agent=Mozilla/5.0 (Linux; X11) e Accept-Language=en, a chave de cache é http://aliyundoc.com/a/b/image.jpgMozilla/5.0(Linux;X11)en. Na caixa de texto HTTP Headers, insira os campos de cabeçalho da requisição a serem incluídos, como User-Agent e Accept-Language.
Custom Variables
Exemplo 1
O nome da variável é language, a origem é Request Header, o campo de origem é Accept-Language, a regra de correspondência é ([%w]+),([%w]+) e a expressão da variável é $1aa. configure a variável personalizada da seguinte forma: defina Variable name como language, selecione Request Header como source, insira Accept-Language como source field, insira ([%w]+),([%w]+) como Match rule e insira $1aa como Variable expression.
Considere uma requisição do cliente para http://aliyundoc.com/a/b/image.jpg com o cabeçalho HTTP Accept-Language=en,ch. A regra de correspondência captura en e o atribui a $1 na expressão da variável. A expressão da variável também anexa aa, resultando no valor da variável enaa com o alias language. Esse valor é anexado à URL para formar a chave de cache final: http://aliyundoc.com/a/b/image.jpgenaa.
O $n na expressão da variável refere-se ao conteúdo capturado pelo n-ésimo grupo entre parênteses na regra de correspondência. Por exemplo, com Accept-Language=en,ch e a regra de correspondência ([%w]+),([%w]+), $1=en e $2=ch.
Exemplo 2
O nome da variável é expired, a origem é Request Cookie, o campo de origem é a, a regra de correspondência é [%w]+:(.*) e a expressão da variável é $1. configure a variável personalizada da seguinte forma:
Variable name:
expiredsource: Request Cookie
source field:
aMatch rule:
[%w]+:(.*)Variable expression:
$1
Considere uma requisição do cliente para http://aliyundoc.com/a/b/image.jpg com o cookie Cookie a=expired_time:12635187. A regra de correspondência captura 12635187 e o atribui a $1 na expressão da variável, com o alias expired. Esse valor é anexado à URL para formar a chave de cache final: http://aliyundoc.com/a/b/image.jpg12635187.
Exemplo 3
Este exemplo combina uma regra de URI e uma variável personalizada.
URI:
Consolide todas as requisições com uma URI correspondente a /abc/.*/abc em /abc. A source URI é /abc/.*/abc e a Final URI é /abc.
Variáveis personalizadas:
O nome da variável é testname, a origem é Path, a regra de correspondência é /abc/xyz/(.*) e a expressão da variável é $1. configure da seguinte forma: defina Variable name como testname, defina source como Path, defina Match rule como /abc/xyz/(.*) e defina Variable expression como $1.
Considere uma requisição do cliente para http://aliyundoc.com/abc/xyz/abc/image.jpg. De acordo com a configuração de URI, a chave de cache é reescrita para http://aliyundoc.com/abc/image.jpg. Em seguida, com base na configuração da variável personalizada, o caminho da requisição original corresponde a /abc/xyz/(.*). Nesse momento, $1 recebe o valor abc/image.jpg e é anexado à chave de cache, formando a chave de cache final: http://aliyundoc.com/abc/image.jpgabc/image.jpg. Isso demonstra como combinar regras para implementar lógicas de cache mais complexas.
Se não houver correspondência para uma variável personalizada da chave de cache, a expressão da variável $1 não é anexada à chave de cache.
Exemplo 4
Este exemplo combina uma Rule Condition e uma variável personalizada para gerar chaves de cache diferentes para requisições de clientes móveis e de PC.
Rule Condition Mobile:
O cabeçalho User-Agent contém qualquer uma das seguintes strings: *Mobile*,*Android*,*iPhone*,*ipad*.
Rule Condition PC:
O cabeçalho User-Agent não contém nenhuma das seguintes strings: *Mobile*,*Android*,*iPhone*,*ipad*.
Chave de cache personalizada Mobile:
Para Rule Condition, selecione Mobile. Para as Custom Variables, defina Variable Name como Mobile, Source como Path, Matching Rule como / e Variable Expression como +mobile.
Chave de cache personalizada PC:
Para Rule Condition, selecione PC. Para as Custom Variables, defina Variable Name como PC, Source como Path, Matching Rule como / e Variable Expression como +pc.
Em uma requisição do cliente para http://aliyundoc.com/image.jpg, a requisição corresponde à regra de chave de cache personalizada Mobile ou PC com base no valor de User-Agent. A chave de cache final para clientes móveis é http://aliyundoc.com/image.jpg+mobile e a chave de cache final para clientes de PC é http://aliyundoc.com/image.jpg+pc.