我正在尝试按照以下建议缓存我的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。但我觉得这有点不为人知。
答案 0 :(得分:0)
在这里回答我自己的问题。
因为脚本标记是包含加载到$ templateCache的html文件的一部分,所以脚本已经。当对templateUrl发出请求时,它不应该有缓存破坏附录。
避免这一切的最简单方法是在“templates.js”上设置缓存清除哈希或字符串,或者构建过程的模板输出。这样整个文件就会失效并根据需要重新加载。