Ticket #379 (closed melhoria: fixed)

Opened 11 years ago

Last modified 9 years ago

Cache de requisições no connector

Reported by: amuller Owned by: amuller
Priority: média Milestone:
Component: ExpressoMail Version: 1.0
Severity: Keywords: cache connector requests
Cc: WorkGroup:

Description

Devido a problemas crescentes de desempenho no expresso fica evidente que para ambientes grandes as requisições mais triviais precisam ser colocadas em cache.

Aqui estou anexando uma versão do connector do expressoMail baseado na revisão 554 do trunk. Ela armazena as requisições chamadas anteriormente numa variável javascript. Essa forma de armazenar as requisições é bem interessante porque é o nível mais próximo do usuário possível portanto evita trafego na rede. Logicamente uma cache nos servidores que atendem estas requisições pode ser interessante também, mas quando a necessidade é o desempenho vários níveis de cache são sempre benéficos.

Este ticket está aberto para que todos que assim desejarem baixem esta versão do connector.js coloquem em suas respectivas instalações e me reportem problemas. A abordagem de expirar a cache ainda está bem conservadora portanto a corretude sobressai o desempenho.

Mais testes ainda serão anexados aqui, suponho que todos que se interessam façam o mesmo.

Attachments

pastas1.png Download (3.0 KB) - added by wmerlotto 11 years ago.
Cache dos contadores de mensagens não lidas
pastas2.png Download (2.7 KB) - added by wmerlotto 11 years ago.
Cache dos contadores de mensagens não lidas
contactcenterCache.tar.gz Download (37.6 KB) - added by amuller 11 years ago.
Cache do connector do Contactcenter (descompacte no raíz do módulo)
expressoMail_cache.tar.gz Download (1.4 MB) - added by amuller 11 years ago.
Cache do connector do ExpressoMail? (descompacte no raíz do módulo)

Change History

comment:1 Changed 11 years ago by wmerlotto

Maravilha! Já estou testando as modificações e notei algo estranho na atualização do número de mensagens não lidas de cada pasta. Estava lendo as mensagens da pasta "Atividades" (imagem "pastas1.png"), e após ler as oito mensagens o indicador ainda exibia oito não lidas, mais cinco na "caixa de entrada". Cliquei na caixa de entrada (de acordo com a imagem "pastas2.png") e contador zerou para a pasta "Atividades" (o correto) mas alterou o número para caixa de entrada, onde são cinco mensagens não lidas e estava exibindo apenas três.

Quando voltei a pasta "Atividades", os contatores ficaram novamente como na imagem "pastas1.png"... Voltando para caixa de entrada, ficaram como a "pastas2.png", então acho que o cache está agindo... :D

Changed 11 years ago by wmerlotto

Cache dos contadores de mensagens não lidas

Changed 11 years ago by wmerlotto

Cache dos contadores de mensagens não lidas

comment:2 Changed 11 years ago by amuller

Eu notei este problema das mensagens não lidas. Eu corrigi uma parte e a outra parte estou providenciando.

Já anexo aqui

comment:3 follow-up: ↓ 4 Changed 11 years ago by amuller

Anexei um tar.gz com 4 arquivos js. Esta modificação acaba com problema de numeração das pastas. Os teste que fiz aqui ficam em torno de 30% a 60% de acerto na cache (dependendo do uso e do tempo de uso).

Pra ter algo mais efetivo precisaria mudar um pouco mais o expressoMail. Por exemplo:

  • As funções get_info_previous_msg e get_info_next_msg deveriam compartilhar a cache.
  • A função get_info_msg deveria compartilhar a cache com as citadas acima
  • A expiração (expurgação) da cache deveria ser feita só das pastas modificadas e não de todas.

Estas modificações devem dar um acerto bem melhor (imagino que 70 a 80%). Só deixando as faltas compulsórias. Porém podem dar muito trabalho.

comment:4 in reply to: ↑ 3 Changed 11 years ago by wmerlotto

Replying to amuller:

Anexei um tar.gz com 4 arquivos js...

Blz, já apliquei as modificações aqui no meu servidor.

comment:5 Changed 11 years ago by amuller

Anexo o connector do contactcenter também

comment:6 Changed 11 years ago by amuller

Anexei

ContactCenter? com Cache. ExpressoMail? com Cache.

Funcionando bem já.

comment:7 follow-up: ↓ 8 Changed 11 years ago by amuller

Vale a pena conferir o anexo do expressoMail, com diversas melhorias

  • Cache compartilhada entre leitura do próximo e anterior e abertura normal.
  • Simplificação do código de busca e até correção de alguns problemas
  • Outras melhorias

comment:8 in reply to: ↑ 7 Changed 11 years ago by wmerlotto

Replying to amuller:

Vale a pena conferir o anexo do expressoMail, com diversas melhorias

Bacana! Acabei de aplicar aqui em minha instalação, mas ocorreu um erro:

PHP Fatal error:  Call to undefined method imap_functions::get_info_previous_msg() in /var/www/expresso/expressoMail1_2/inc/class.imap_functions.inc.php on line 1546

Está faltando esta função...

Changed 11 years ago by amuller

Cache do connector do Contactcenter (descompacte no raíz do módulo)

comment:9 Changed 11 years ago by amuller

Hum! ta em anexo, a versão revertida desse arquivo. O resto não muda

comment:10 follow-up: ↓ 11 Changed 11 years ago by amuller

Falha minha, meu arquivo imap_functions tinha sido personalizado e eu anexei junto :S

comment:11 in reply to: ↑ 10 Changed 11 years ago by wmerlotto

Replying to amuller:

Falha minha, meu arquivo imap_functions tinha sido personalizado e eu anexei junto :S

Sem problemas... Agora funcionou! :D

comment:12 Changed 11 years ago by niltonneto

  • Status changed from new to closed
  • Resolution set to fixed

O padrão vem desabilitado. Habilite na administração do módulo. Implementado em [569]

comment:13 Changed 11 years ago by wmerlotto

  • Status changed from closed to reopened
  • Resolution fixed deleted
  • Milestone set to Expresso Mail 1.233

Estou notando alguns funcionamentos estranhos, que acredito estarem ligados ao cache, como:

  1. Ao realizar uma busca por um determinado assunto e em seguida realizar outra busca, por outro assunto, o resultado é sempre o da primeira busca. Preciso fazer um reload da página para obter o resultado da segunda consulta;
  2. A primeira mensagem, não lida, que vejo após entrar no ExpressoMail não é marcada como lida. As próximas são. Preciso "forçar", marcando a mensagem como lida pelo menu;

Estou utilizando a última versão do Expresso, direto do SVN. Mais alguém relatou algo assim?

comment:14 Changed 11 years ago by amuller

Sim, inclusive tem um problema que aparece com notificações de mensagens também. Vou tentar resolver este e os outros que relatou.

comment:15 follow-up: ↓ 16 Changed 11 years ago by amuller

Uma versão do connector do expressoMail com estes e outros problemas corrigidos foi anexada.

comment:16 in reply to: ↑ 15 Changed 11 years ago by wmerlotto

Replying to amuller:

Uma versão do connector do expressoMail com estes e outros problemas corrigidos foi anexada.

Por favor, verifique o main.js, pois estou tendo este erro: "openTab is not defined".

E não seria melhor efetuar estas modificações no SVN? Assim, eu posso atualizar e retroceder (caso necessário, como agora) as versões com muito mais facilidade.

comment:17 follow-up: ↓ 18 Changed 11 years ago by amuller

Realmente o que eu anexei não vai funcionar no repos externo. É que eu tava testando mais profundamente,

Tenque esperar o Nilton comitar no svn externo

comment:18 in reply to: ↑ 17 ; follow-up: ↓ 19 Changed 11 years ago by niltonneto

Replying to amuller:

Realmente o que eu anexei não vai funcionar no repos externo. É que eu tava testando mais profundamente,

Tenque esperar o Nilton comitar no svn externo

Como ficou definido nos últimos encontros da comunidade, apenas um de cada empresa fica responsável pelos commits no SVN do ExpressoLivre?. Vai te que aguardar um pouco, pois estou meio apurado com esses sincronismos por aqui :S

comment:19 in reply to: ↑ 18 Changed 11 years ago by wmerlotto

Replying to niltonneto:

apenas um de cada empresa fica responsável pelos commits no SVN do ExpressoLivre....

É verdade... Mas é possível criarmos um  branch no SVN para fazer estes testes... O que acham?

De qualquer forma, continue anexando os arquivos aqui, assim te ajudo a testá-los...

Changed 11 years ago by amuller

Cache do connector do ExpressoMail? (descompacte no raíz do módulo)

comment:20 follow-up: ↓ 21 Changed 11 years ago by amuller

A sugestão do wmerlotto é ideal. Mas de qualquer jeito anexei o arquivo

comment:21 in reply to: ↑ 20 Changed 11 years ago by wmerlotto

Replying to amuller:

A sugestão do wmerlotto é ideal. Mas de qualquer jeito anexei o arquivo

Amuller, agora funcionou perfeitamente! Os problemas que havia relatado não ocorreram mais. Até o momento somente a internacionalização não está funcionando (o 1ExpressoMail está em inglês).

Creio que seria interessante realizar mais testes com este código sincronizado na árvore principal ou por meio de um branch, já que houve alteração em vários arquivos... Vou estudar uma forma de ativarmos o branch para esse tipo de desenvolvimento, e como tenho acesso ao SVN, posso criá-lo. Aí o Nilton fica livre para continuar a sincronização. O que acham?

comment:22 Changed 11 years ago by niltonneto

  • Status changed from reopened to closed
  • Resolution set to fixed

Implementado em [569], com correções em [630] e [649].

comment:23 Changed 9 years ago by niltonneto

  • Milestone Expresso Mail 1.233 deleted

Milestone Expresso Mail 1.233 deleted

Note: See TracTickets for help on using tickets.