$ templateCache,ng-template和缓存问题 - angularjs

时间:2018-05-15 20:37:17

标签: angularjs angular-templatecache

我正在尝试按照以下建议缓存我的angularjs应用程序的html文件:https://gist.github.com/ProLoser/6181026

我将动态缓存键(如?v=123456790)附加到所有html文件(angular ui bootstrap使用的模板目录中除外)。

对于他们自己文件中的部分内容,即app/views/customer/customer-history.html,这种方式非常有效。但是,对于脚本形式的部分,例如, <script type='text/ng-template' id='customer-history'>找不到模板并发出服务器请求,结果为404。

E.g。 localhost:8080/customer-history/?v=1234567890

我可以看到有问题的模板位于$ templateCache中。使用ng-template的名称只是名称customer-history,而单独的文件名是路径app/views/customer/customer-history.html,正如您所期望的那样。

它是一个大型应用程序,所以通过并将它们全部移动到他们自己的文件等将不是微不足道的。我到处搜遍了,我没有把任何事情搞砸,所以我猜测它是如何实现templateCache的基础。

我在构建过程中使用gulp-templatecache插件,但文档非常有限,我不认为问题就在那里。

我目前的解决方案是在附加版本号的函数中跳过违规模板,方法是将inCache函数装饰到$ templateCache工厂并在检查期间使用它来附加cacheKey。但我觉得这有点不为人知。

1 个答案:

答案 0 :(得分:0)

在这里回答我自己的问题。

因为脚本标记是包含加载到$ templateCache的html文件的一部分,所以脚本已经。当对templateUrl发出请求时,它不应该有缓存破坏附录。

避免这一切的最简单方法是在“templates.js”上设置缓存清除哈希或字符串,或者构建过程的模板输出。这样整个文件就会失效并根据需要重新加载。