forum icon indicating copy to clipboard operation
forum copied to clipboard

Tabela que será carregada apenas uma vez

Open rogerio-pereira opened this issue 7 years ago • 6 comments

Olá pessoal, boa noite Estou com uma dúvida, estou desenvolvendo um sistema onde algumas configurações serão setadas pelo usuário que deverão ser carregados assim que iniciar o sistema, por exemplo para qual e-mail o sistema deverá enviar os emails de notificações, ou outros dados de configurações. Para salvar é tranquilo, meu problema é como fazer para carregar apenas uma vez essa tabela, e deixar as informações salvas enquanto o usuário estiver usando o sistema.

rogerio-pereira avatar Jun 22 '17 02:06 rogerio-pereira

Se for para carregar somente dados do usuário podes usar o sessionStorage do navegador.

karson avatar Jun 22 '17 07:06 karson

Bom dia,

@karson o sessionStorage do navegador está fora do sistema(é client side) não acredito que armazenar ali dados que serão utilizados pelo sistema(server side) ajude. @rogerio-pereira salve esses dados na tabela e no cache e para leitura desses dados pelo sistema use: Cache. Caso o dado na hora da leitura não exista no cache, busque da tabela e salve no cache, na próxima vez o sistema irá pegar do cache.

@karson acho conveniente o uso do que você sugeriu(cache local) quando precisamos armazenar em cache dados de apresentação, por exemplo configurações de cor do tema dos aplicativos frontend(web, mobile, desktop, etc). Dessa forma o app iOS pode ser configurado de uma forma, o app web de outra, etc. Por exemplo, eu poderia deixar no site o tema azul e no iOS o tema vermelho. Ou ainda, no site quero ordenar os resultados de busca DESC e no iOS ASC. Isso é apenas um exemplo.

@rogerio-pereira portanto, separe os dados de cache necessários pela aplicação cliente(sua camada view é uma aplicação cliente), dos de cache dados utilizados pelo sistema.

Maykonn avatar Jun 22 '17 12:06 Maykonn

@Maykonn realmente o Cache é a melhor solução para o caso do @rogerio-pereira

karson avatar Jun 22 '17 12:06 karson

certo e onde eu posso fazer a regra de negocios para busca do dados, como se fosse no "boot" do sistema, o que quero é evitar de ficar verificando e fazendo a busca em varias partes diferentes do sistema

rogerio-pereira avatar Jun 22 '17 14:06 rogerio-pereira

Alguem pode me ajudar? ainda nao resolvi meu problema

Exemplificando melhor: No sistema vou precisar de algumas variaveis que devem ser carregadas que influenciarão no layout (todas as paginas usam o layout) e funcionamento do sistema, essas variaveis deverão ser armazenadas no banco de dados, haverá uma tabela para as configurações...

Existema configurações que nao dependerão do usuário, então não posso vincular uma variavel a um id de usuário...

Sugeriram usar cache, até então blz... mas minha duvida é o seguinte, onde posso carregar como se fosse no "boot" do sistema, o que quero é evitar é ficar chamando o método em todos os controllers uma vez que o usuário pode entrar, pela home do site, ou talvez entrar direto em alguma pagina especifica (por exemplo, no blog)

rogerio-pereira avatar Jul 09 '17 19:07 rogerio-pereira

Você pode usar um midleware para fazer esse carregamento: https://laravel.com/docs/5.4/middleware

Faz um if para verificar se as informações já foram carregadas uma vez, caso não tenham sido carregadas você busca as configs no banco.

Pode usar também um Service Provider para isso ao invés do Middleware: https://laravel.com/docs/5.4/providers#the-boot-method

Acredito que se tiver usando um redis ou até sessão ou cookies sejam suficiente para você guardar essas informações.

Abraços!

cagartner avatar Jul 10 '17 11:07 cagartner