Scientist 2 Denunciar post Postado Junho 25, 2012 Bom dia, estou com o seguinte problema, quando modifico algo no website como :CSS ou IMAGEM ele chega a demorar até 2 dias ou mais para "replicar" a informação, tenho que limpar o histórico do meu navegador para ver as alterações. Isso é normal ? Fiz uma modificação no Sábado no meu notebook, e quando cheguei no trabalho na segunda-feira e fui verificar, ainda estava os CSS e Imagens antigas, então limpei o histórico para ver as alterações. Compartilhar este post Link para o post Compartilhar em outros sites
mangakah 217 Denunciar post Postado Junho 25, 2012 Isso não é normal. Deve have alguma configuração errônea no servidor. O site roda no Apache? Tem um arquivo chamado ".htaccess" na raiz do site? Se sim, poste o conteúdo dele aqui. Compartilhar este post Link para o post Compartilhar em outros sites
Scientist 2 Denunciar post Postado Junho 25, 2012 Sim, roda APACHE. Segue o conteudo do meu .htacess: <IfModule mod_deflate.c> # A regra abaixo compacta arquivos do tipo html, text, css e javascript AddOutputFilterByType DEFLATE text/html text/plain text/css application/x-javascript </IfModule> # BEGIN Expire headers <IfModule mod_expires.c> ExpiresActive On ExpiresDefault "access plus 1 seconds" ExpiresByType image/x-icon "access plus 2592000 seconds" ExpiresByType image/jpeg "access plus 2592000 seconds" ExpiresByType image/png "access plus 2592000 seconds" ExpiresByType image/gif "access plus 2592000 seconds" ExpiresByType application/x-shockwave-flash "access plus 2592000 seconds" ExpiresByType text/css "access plus 604800 seconds" ExpiresByType text/javascript "access plus 216000 seconds" ExpiresByType application/x-javascript "access plus 216000 seconds" ExpiresByType text/html "access plus 600 seconds" ExpiresByType application/xhtml+xml "access plus 600 seconds" </IfModule> # END Expire headers # BEGIN Cache-Control Headers <IfModule mod_headers.c> <FilesMatch "\\.(ico|jpe?g|png|gif|swf)$"> Header set Cache-Control "max-age=2592000, public" </FilesMatch> <FilesMatch "\\.(css)$"> Header set Cache-Control "max-age=604800, public" </FilesMatch> <FilesMatch "\\.(js)$"> Header set Cache-Control "max-age=216000, private" </FilesMatch> <FilesMatch "\\.(x?html?|php)$"> Header set Cache-Control "max-age=600, private, must-revalidate" </FilesMatch> </IfModule> # END Cache-Control Headers # BEGIN Turn ETags Off <IfModule mod_headers.c> Header unset ETag </IfModule> FileETag None # END Turn ETags Off # BEGIN Remove Last-Modified Header <IfModule mod_headers.c> Header unset Last-Modified </IfModule> # END Remove Last-Modified Header Compartilhar este post Link para o post Compartilhar em outros sites
mangakah 217 Denunciar post Postado Junho 25, 2012 Arquivos HTML e PHP tem cache de 1 hora, o que significa que se você visitar agora e postar algo diferente, esse algo só irá aparecer na página após uma hora. Arquivos CSS: 168 horas após o acesso ExpiresByType text/css "access plus 604800 seconds" Arquivos Javascript:60 horas... ExpiresByType text/javascript "access plus 216000 seconds" Legal... o problema é que se você altera um arquivo CSS ou javascript ele não irá aparecer por tão cedo. Uma maneira de evitar isso é adicionando a data da última modificação do arquivo ao caminho dele na tag link: <link rel="stylesheet" href="/estilos/tela.css?v=<?php echo filemtime("/estilos/tela.css"); ?>" /> Compartilhar este post Link para o post Compartilhar em outros sites
Scientist 2 Denunciar post Postado Junho 25, 2012 Arquivos HTML e PHP tem cache de 1 hora, o que significa que se você visitar agora e postar algo diferente, esse algo só irá aparecer na página após uma hora. Arquivos CSS: 168 horas após o acesso ExpiresByType text/css "access plus 604800 seconds" Arquivos Javascript:60 horas... ExpiresByType text/javascript "access plus 216000 seconds" Legal... o problema é que se você altera um arquivo CSS ou javascript ele não irá aparecer por tão cedo. Uma maneira de evitar isso é adicionando a data da última modificação do arquivo ao caminho dele na tag link: <link rel="stylesheet" href="/estilos/tela.css?<?php echo filemtime("/estilos/tela.css"); ?>" /> Não é mais fácil diminuir o tempo no arquivo .htacess ? Compartilhar este post Link para o post Compartilhar em outros sites
mangakah 217 Denunciar post Postado Junho 25, 2012 Mas isso, não irá resolver o seu problema, apenas diminuirá de validade do cache. Compartilhar este post Link para o post Compartilhar em outros sites
Scientist 2 Denunciar post Postado Junho 25, 2012 Realmente não entendi. Como assim só diminuirá a validade do cache ? Compartilhar este post Link para o post Compartilhar em outros sites
mangakah 217 Denunciar post Postado Junho 25, 2012 Realmente não entendi. Como assim só diminuirá a validade do cache ? Quando o visitante acessa seu site, o navegador armazena os arquivos em cache e memoriza a data e hora desse acesso além de a data e hora que esse cache irá expirar (ou seja, não será mais válido). Enquanto isso não acontece, nas futuras visitas ao mesmo site o navegador irá usar os arquivos do cache, ao invés de puxá-los do navegador. É bom e recomendável configurar o servidor para aproveitar o cache do navegador, mas é preciso também tomar alguns cuidados. Para melhorar essas configurações e resolver o seu problema, eu sugiro que você remova o cache para arquivos .php, pois são páginas dinâmicas e adicione a data da última modificação às chamadas em <link> de arquivos CSS e JS (como exemplifiquei acima). Compartilhar este post Link para o post Compartilhar em outros sites
Scientist 2 Denunciar post Postado Junho 25, 2012 Para adicionar a data da ultima modificação as chamadas em LINK, obrigatoriamente tenho que passa um variável chamada "V" via get ? dessa forma: <link rel="stylesheet" href="/estilos/tela.css?v=<?php echo filemtime("/estilos/tela.css"); ?>" /> Entendi .. muito obrigado !!! Só uma coisa, como tiro o php do cache ? Compartilhar este post Link para o post Compartilhar em outros sites
mangakah 217 Denunciar post Postado Junho 25, 2012 Substitua <FilesMatch "\\.(x?html?|php)$"> Por <FilesMatch "\.html$"> Assim você ficará apenas as páginas estáticas HTML no cache (com validade de 600 segundos). Se você não tiver páginas estáticas em seu site, você não precisa dessa regra e pode removê-la. Neste caso, você deve remover esse bloco: <FilesMatch "\\.(x?html?|php)$"> Header set Cache-Control "max-age=600, private, must-revalidate" </FilesMatch> Remova também: ExpiresByType text/html "access plus 600 seconds" Para remover o cache de arquivos html. Agora para impedir que o navegador use uma versão antiga de arquivos CSS e JS, adicione a data da última modificação desses arquivos na chamada para eles. Exemplos:´ <!-- Chamada para arquivo CSS --> <link rel="stylesheet" type="text/css" href="tema.css?v=<?php echo filemtime("tema.css"); ?>" /> <!-- Chamada para aquivo JS --> <script type="text/javascript" src="script.js?v=<?php echo filemtime("script.js"); ?>"></script> Irá retornar algo como: <!-- Chamada para arquivo CSS --> <link rel="stylesheet" type="text/css" href="tema.css?v=1340648632" /> <!-- Chamada para aquivo JS --> <script type="text/javascript" src="script.js?v=1340648632"></script> Quando você fizer alguma alteração nesses arquivos, o timestamp (um número que representa uma data) será diferente e o navegador irá interpretar isso como se fosse uma chamada para um arquivo diferente e irá desconsiderar o arquivo no cache. Compartilhar este post Link para o post Compartilhar em outros sites
Scientist 2 Denunciar post Postado Junho 25, 2012 Perfeito amigo, resolveu meu problema !! Obrigado mais uma vez. Compartilhar este post Link para o post Compartilhar em outros sites
Macilio Campos 0 Denunciar post Postado Agosto 11, 2013 Socorro !!! como faço para alterar o meu. Mesmo problema, to ficando com o site no cache do meu provedor de acesso. quando eu ou qualquer outra pessoa de minha cidade vai acessar o site nao abre. Provalvelmente pq ja esta no cache do provedor fundo de quintal q tem aqui. Olha a copia de meu arquivo .htaccess: ______________________________________________________________________________________ # 1.To use URL Alias you need to be running apache with mod_rewrite enabled. # 2. In your opencart directory rename htaccess.txt to .htaccess. # For any support issues please visit: http://www.opencart.com Options +FollowSymlinks # Prevent Directoy listing Options -Indexes # Prevent Direct Access to files <FilesMatch "\.(tpl|ini|log)"> Order deny,allow Deny from all </FilesMatch> # SEO URL Settings RewriteEngine On # If your opencart installation does not run on the main web folder make sure you folder it does run in ie. / becomes /shop/ RewriteBase / RewriteRule ^sitemap.xml$ index.php?route=feed/google_sitemap [L] RewriteRule ^googlebase.xml$ index.php?route=feed/google_base [L] RewriteRule ^download/(.*) /index.php?route=error/not_found [L] RewriteCond %{REQUEST_FILENAME} !-f RewriteCond %{REQUEST_FILENAME} !-d RewriteCond %{REQUEST_URI} !.*\.(ico|gif|jpg|jpeg|png|js|css) RewriteRule ^([^?]*) index.php?_route_=$1 [L,QSA] ### Additional Settings that may need to be enabled for some servers ### Uncomment the commands by removing the # sign in front of it. ### If you get an "Internal Server Error 500" after enabling any of the following settings, restore the # as this means your host doesn't allow that. # 1. If your cart only allows you to add one item at a time, it is possible register_globals is on. This may work to disable it: # php_flag register_globals off # 2. If your cart has magic quotes enabled, This may work to disable it: # php_flag magic_quotes_gpc Off # 3. Set max upload file size. Most hosts will limit this and not allow it to be overridden but you can try # php_value upload_max_filesize 999M # 4. set max post size. uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields # php_value post_max_size 999M # 5. set max time script can take. uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields # php_value max_execution_time 200 # 6. set max time for input to be recieved. Uncomment this line if you have a lot of product options or are getting errors where forms are not saving all fields # php_value max_input_time 200 # 7. disable open_basedir limitations # php_admin_value open_basedir none Compartilhar este post Link para o post Compartilhar em outros sites