W3 Total Cache, CDN e arquivos de temas [fechado]

10

Atualizei o arquivo style.css da minha instalação do WordPress recentemente. A mudança foi efetiva: quando conectado como administrador (meu blog é definido para que o administrador nunca receba uma versão em cache do site, mas uma versão "ao vivo"), eu posso vê-los.

Mas meu blog está sendo veiculado por meio de uma CDN (usando o W3 Total Cache). Por meio da CDN, as alterações não são efetivas: a CDN não serve os arquivos modificados do meu tema. Mesmo que eu os tenha carregado após a modificação (Painel> Desempenho> CDN> Carregar arquivos de tema.

Meu CDN é executado no AmazonCloud Front. E o Minify está desabilitado no W3 Total Cache.

O arquivo de tema que está sendo veiculado na minha CDN é uma versão compactada: style.css.gzip

Devo "limpar" os objetos da minha CDN ou esperar um pouco mais (já faz mais de uma semana). E sim, esvazio o cache do navegador que estou usando para ver se as alterações estão entrando em vigor. Ou há algo mais que estou perdendo?

Obrigado,

P.

Parneix
fonte

Respostas:

10

Você precisa

  1. Faça a versão dos seus arquivos (chamando-o style.css?ver=xxx.xxx) e verifique se a distribuição do CloudFront tem "Sequências de consulta direta" ativadas. Essa é a melhor opção, pois significa que tudo o que você precisa fazer é aumentar o número na sequência de consultas e o CloudFront buscará esse arquivo automaticamente.

  2. Invalide manualmente seus arquivos pelo AWS Console (há uma guia de invalidação quando você edita sua distribuição)

Para ativar 'Cadeias de consulta avançadas', faça o seguinte:

  • Edite sua distribuição do Cloudfront, marcando a caixa de seleção à esquerda do 'i' e clique no botão "configurações de distribuição" na barra de ferramentas
  • Vá para a guia Comportamentos
  • Selecione a linha e clique em 'Editar'
  • Altere "seqüências de caracteres de consulta direta" para Sim
  • Clique em "Sim, Editar"
anu
fonte
11
@kaiser sim, a data e hora como a versão é a melhor maneira de controlar o arquivo. No entanto, você ainda precisa se certificar de que a opção "Encaminhar consultas Strings" está activada no CloudFront, caso contrário, o seu número de versão muito bem trabalhada fica ignorado: P
anu
Obrigado. Tenho duas perguntas para você, pois não conheço esse procedimento. 1) O nome dos arquivos "versionados" deve seguir exatamente o exemplo que você deu (com o ponto de interrogação, os sinais de igual e substituir todos os "x" pelos números de minha escolha), certo? 2) No meu console da AWS para CLoudFront, clico no "I" à esquerda da tabela, ao lado da distribuição que criei para o meu blog. Isso me permite acessar as configurações da distribuição. Lá posso ver que as "seqüências de consulta direta" são "falsas". Devo replicar este “comportamento” com os mesmos valores, mas com “true” para "Para strings Q.."
Parneix
11
1. yes ou você pode usar o bom significado do @ kaiser, mas a resposta incompleta para nomear seu arquivo. 2. Atualizarei a resposta com o processo
anu
8

Existe um "truque" simples para impedir o armazenamento em cache, quando o conteúdo do arquivo é alterado: adicione um número de versão, definido para a data / hora mais recente em que você alterou o arquivo.

add_action( 'wp_enqueue_scripts', 'wpse61738_non_cached_stylesheet' );
function wpse61738_non_cached_stylesheet()
{
    wp_enqueue_style( 
        'style-main',
        get_stylesheet_directory_uri().'/style.css',
        array(),
        filemtime( get_stylesheet_directory().'/style.css' )
    );
}

Isso será anexado ?ver=0123456789ao seu link de referência style.css no seu cabeçalho. O número da versão será alterado apenas quando o conteúdo dos arquivos for modificado. Portanto, você tem uma solução que funciona perfeitamente com a) cache do lado do servidor b) cache do navegador e atualiza automaticamente.

kaiser
fonte
Ok, essa é uma opção realmente interessante: elimina a necessidade de versionar manualmente meu style.cssarquivo após cada modificação (o que esquecerei de fazer em um ponto ou outro). Agora, se posso perguntar, onde adiciono esse código? Eu acho que meu functions.phparquivo?
Parneix
Eu não sei, onde você precisa adicionar este código. Basta pesquisar nos arquivos de seus temas e substituir a chamada "normal" para o arquivo style.css. Vou postar uma pequena atualização, para que você possa colocá-la no seu arquivo functions.php (isso ainda significa que você precisa remover a chamada original). E btw: isso é apenas uma adição à resposta @anu. (Upvotes ainda apreciado :)
kaiser
11
Sem problemas! Entendo perfeitamente que a localização desse código provavelmente será alterada, dependendo do tema usado. Vou conseguir adicioná-lo ao meu functions.phparquivo. Ainda acho que é um bom complemento para a solução fornecida pelo @anu. Muito obrigado pela ajuda.
Parneix
-1

uma resposta curta ...

  1. Exclua todos os seus arquivos de tema e carregue-os novamente. algumas vezes a ação de exclusão limpa a CDN

  2. Sim, você pode tentar Limpar - mas Excluir e reenviar é geralmente mais rápido.

  3. Verifique também as configurações no W3TC e na Amazon. O cache padrão para o W3TC geralmente é de 365 dias. que são 31536000 segundos :)

Na Amazon .., haverá uma configuração para os pontos de extremidade para consultar novamente a CDN. Eu sei que no Rackspace o padrão é 24 horas.

Damien
fonte
11
Há muito melhores maneiras de fazer isso do que isso, ver a minha resposta
anu
“Exclua todos os seus arquivos de tema e carregue-os novamente. algumas vezes a ação de exclusão limpa a CDN ”Você quer excluí-las no meu site, certo? Em seguida, reenvie-os na minha instalação do WordPress. E então eu acho que faça o "Upload de arquivos de tema" novamente através do painel W3 Total Cache?
Parneix
11
@Parneix sério, não exclua tudo, a menos que você precise. Quase certamente não funcionará, a menos que você exclua tudo da CDN também. Há muito melhores maneiras de invalidar o seu arquivo CSS obsoleto
anu
11
Sim obrigado! Tomei nota da sua sugestão. Eu realmente aprecio toda a ajuda que estou recebendo aqui. Não só estou resolvendo meu problema, mas também estou aprendendo coisas novas.
Parneix