desativar o armazenamento em cache em uma visão parcial no mvc 3
<p>eu tenho um problema com um modo de exibição parcial sendo armazenado em cache quando não deveria ser. esta vista parcial é usada para exibir o logon/logoff em uma página. ele usa o código simples abaixo para descobrir qual link exibir </p><pre><code>@if(request.isauthenticated) { &lt;a href="@url.action("logoff", "account", new { area = "" })"&gt;log off&lt;/a&gt; } else { &lt;a href="@url.action("logon", "account", new { area = "" })"&gt;log on&lt;/a&gt; } </code></pre><p>esta vista parcial é chamada com todas as páginas no meu aplicativo mvc3, usando </p><pre><code>@html.partial("\_headerview") </code></pre><p>na maioria dos meus controladores, eu tenho o cache de saída definido, para que eu possa tirar proveito do cache do meu conteúdo. </p><pre><code>[outputcache(duration = 86400, varybyparam = "*")] </code></pre><p>agora, meu problema é que a página inteira está sendo armazenada em cache quando não quero que a exibição parcial seja. isso está causando um comportamento incorreto, onde às vezes exibe logoff mesmo se o usuário não estiver logado, etc. existe uma maneira de armazenar todo o conteúdo em cache, exceto a vista parcial em questão? </p>
<p>o que você está procurando é chamado donut caching. aqui está um ótimo artigo explicando o que é e como fazê-lo funcionar <a href="http://www.devtrends.co.uk/blog/donut-output-caching-in-asp.net-mvc-3">http://www.devtrends.co.uk/blog/donut-output-caching-in-asp.net-mvc-3</a> </p>
<p>bruno. quando temos um processo que sai da jvm para um banco ou um navegador precisamos abrir um canal de comunicação, como se fosse um túnel entre a jvm e as outras aplicações. só que esse túnel consome processamento e memória então depois de usar você tem que fechar</p> <p>a maneira mais fácil é anexar a string de origem com algum parâmetro aleatório, que é ignorado no lado do servidor</p><pre><code>&lt;script src="mysavefiles.json?nocache=123" &gt;&lt;/script&gt; </code></pre><p>uma solução seria gerar o elemento de script usando javascript e acrescentar a hora atual como esta:</p><pre><code>var el = document.createelement( script ); el.src = 'mysavefiles.json?nocache=' + (new date()).gettime(); document.head.appendchild( el ); </code></pre><p>dessa forma, o navegador nunca armazenará em cache o arquivo json, pois parece ser um arquivo diferente (devido ao parâmetro) em cada chamada.</p> Telefona para eles que eles mandam um técnico.
  
Você já tentou remover os arquivos temporários, cookies e histórico. Talvez o seu cache esteja muito cheio. Obrigada por fornecer essa informação, @gabril! 


 


Pelo que vejo na imagem que você compartilhou, parece que nesse momento poderia ter havido alguma interrupção.  Quando isso acontece, recomendo  visitar a nossa página de status para verificar o status atual da plataforma. 


 


Caso está tudo funcionando como expectativa, pode ser um problema que existe só no seu dispositivo ou navegador. Para determinar se é esse o caso, sugiro limpar o cache e os cookies do seu navegador ou tente acessar a sua loja em outro navegador ou dispositivo.  Para limpar o cache do seu navegador, confira os passos aqui - não é escrito pela Shopify mas, deves achar útil!  Depois de limpar o cache, recomendo tentar adicionar o CPF como indicado acima.  Por favor me avise o resultado e fico feliz em continuar a nossa conversa!


 


Até mais!



**Amália | Social Care @ Shopify**  
  - A minha resposta foi útil? Clique em **Curtir** para me dizer!  
  - Sua dúvida foi respondida? Clique em **Aceitar Solução**    
 - Para saber mais visite nossa [Central de Ajuda Shopify](https://help.shopify.com/pt-br/?&utm_source=community&utm_medium=web&utm_campaign=signature&utm_content=pt-br) ou nosso [Shopify Blog](https://help.shopify.com/pt-BR/?&utm_source=community&utm_medium=web&utm_campaign=signature&utm_content=pt-br) limpe o cache e force a parada do app, e também veja se tem atualização disponível vc precisa resgatar. senão o nubank considerará que ‘nao há saldo suficiente na conta’ o “guardado” é uma espécie de cofrinho digital que ninguém tem acesso, só você.

isso já ocorreu comigo, agendamento de pagamentos que não foram processados por falta de saldo, pois o dinheiro estava ‘guardado’. <p>entendi, juliana, acredito que a opção de &#34;loop&#34; esteja ligada, entra em configurações (com a ferramenta ao lado do indicador de timecode) e desmarca essa opção. se ela não estiver marcada, me avisa, vou tentar reproduzir o erro aqui.</p> limpe os cookies e cache. ou use este link: https://cliente.meo.pt/perfil/mensagens/abrir-pedido apague todo histórico do crhome, depois faça o login, quando navegar na versão pc, não precisa estar logado, as vezes o bigdata causa estas interferências. <p>o operador <a href="http://php.net/manual/en/language.operators.errorcontrol.php"><code>@</code></a> tells php para suprimir mensagens de erro, para que elas não sejam mostradas.</p><p>por exemplo, usando:</p><pre><code>$result = mysql\_query("this is an invalid query"); </code></pre><p>resultaria em um aviso sendo mostrado, informando que a consulta mysql é inválida, enquanto</p><pre><code>$result = @mysql\_query("this is still an invalid query"); </code></pre><p>não faria.</p><p>note, no entanto, que esta é uma prática de programação muito ruim, pois não faz com que o erro desapareça, apenas os esconde e torna a depuração muito pior, já que você não consegue ver o que está realmente errado com seu código.</p><p>em vez de usar <code>@</code>, você deve desativar <s><code>error\_reporting</code> e <code>display\_errors</code></s> apenas <code>display\_errors</code> em <a href="http://no.php.net/manual/en/errorfunc.configuration.php">php.ini</a> </p>