Pergunta

Eu tenho notado uma solução que pode ajudar você a controlar a colocação em cache de arquivos javascript.

Existe um método SPUtility.MakeBrowserCacheSafeLayoutsUrl. MSDN diz que este método: retorna uma nova URL, que não será armazenado em cache pelo navegador quando o arquivo associado alterações.

Parece incrível.Eu tentei usar esse método assim:

 <script type="text/jscript" src="<%=SPUtility.MakeBrowserCacheSafeLayoutsUrl("projectName/scripts/plugins/tapes_report_definition.js", false)%>" ></script>

Então, isso funcionou.É gerado ?rev={MD5Hash_of_my_file.js} no final da url.Mas depois eu mudei isso .arquivo js, novo hash MD5 não gerada.?rev parte permaneceu o mesmo.Eu tentei iisreset, reimplante etc, mas nada ajudou.Eu verifiquei este método com o Refletor e aprendi que MakeBrowserCacheSafeLayoutsUrl não gerar o hash MD5 de todos os tempo, mas obtém-se a partir interno SPVolitileCache objeto.

Eu pensei que eu poderia limpar esse cache, excluindo todos os arquivos dentro de uma destas duas pastas:

  1. %APPDATA%\Microsoft\Web Server Extensions\Cache
  2. %USERPROFILE%\AppData\Local\Microsoft\WebsiteCache

A exclusão não ajuda.SPUtility.MakeBrowserCacheSafeLayoutsUrl ainda retorna o mesmo valor depois de javascript arquivo é alterado.

Eu tenho três perguntas:

  1. Como faço para atualizar SPVolitileCache depois de tudo?
  2. Como você vigor SPUtility.MakeBrowserCacheSafeLayoutsUrl gerar de novo ?rev= sem purga de cache?
  3. Considerando-se todos acima, não é mesmo fazer sentido usar SPUtility.MakeBrowserCacheSafeLayoutsUrl?

Qualquer informação adicional será muito apreciada!

Foi útil?

Solução

Eu verifiquei isso de novo e eu confirmar que este método é totalmente viável.O URL de um arquivo que fica revigorado depois de iisreset.Isso é exatamente o que eu queria ver.

Outras dicas

Eu gostaria de adicionar isto como um comentário, mas stackexchange não vai permitir isso.Então, aqui está a minha resposta:Para quem quer resolver o problema de cache de elementos de script dentro de uma peça web Editor de Conteúdo (ou um JSLink para um .arquivo js), sabe que o SPUtility.MakeBrowserCacheSafeUrl método é um SERVIDOR de método ÚNICO e deve ser incorporado em uma página ASPX.Certifique-se de que você entenda que você não pode simplesmente construir o código em um .arquivo js ou a sua peça web Editor de Conteúdo e tem função de ti.Ele não vai.

O que está sendo dito, o método realmente é bastante inútil, porque você pode muito bem usar apenas o ScriptLink marca.ScriptLink irá adicionar o ?rev para você.A única vez que você pode ser tentado a usar este método é que se você estiver inserindo marcas de script em uma página que você nunca deve fazer.Que vai totalmente contra toda a SOD quadro e melhores práticas, e provavelmente não funcionará com o MDS.

A razão pela qual eu encontrei esta página foi porque eu tenho um Formulário do InfoPath Web Part em uma página e o desenvolvedor anterior usado separado .arquivo js para fazer alguns botões para ele.A .arquivo js para os botões é referenciado em uma peça web Editor de Conteúdo.Este é, provavelmente, um cenário comum, mas é problemático porque a referência de arquivo não tem um final ?rev menos adicionado manualmente.A menos que haja uma real do lado do cliente método que ajuda a gerar algum tipo de ?rev, e eu não vejo como poderia ser, o meu voto é de que este método é inútil.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a sharepoint.stackexchange
scroll top