É SPUtility.MakeBrowserCacheSafeLayoutsUrl Método útil a todos?
-
10-12-2019 - |
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:
- %APPDATA%\Microsoft\Web Server Extensions\Cache
- %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:
- Como faço para atualizar SPVolitileCache depois de tudo?
- Como você vigor SPUtility.MakeBrowserCacheSafeLayoutsUrl gerar de novo ?rev= sem purga de cache?
- Considerando-se todos acima, não é mesmo fazer sentido usar SPUtility.MakeBrowserCacheSafeLayoutsUrl?
Qualquer informação adicional será muito apreciada!
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.