我试图围绕缓存的概念.我没有广泛使用它并且有关于使用Angular $templateCache
和浏览器Cache的问题:
1)浏览器的缓存和Angular的$ templateCache是否相互竞争?IE一般来说他们存储的是同一类型的东西吗?
鉴于Angular是如何'自以为是',在开发Angular应用程序时,我会假设$templateCache
如果他们存储相同类型的东西,则鼓励您使用浏览器.如果他们确实存储了相同类型的东西,那么使用它们的优缺点是什么?
2)动态生成的HTML如何适合讨论使用哪个缓存(如果它们存储不同的东西)?
3)一般来说使用缓存是否有任何缺点?
它$templateCache
与浏览器缓存完全分开.
浏览器缓存:缓存myapp.js和fancy.css等文件,以便您的浏览器不必从服务器获取文件(如果它具有最近缓存的副本)
$ templateCache:是angularjs
存储和跟踪html片段的方式,这些片段在第一次加载后用于不同的角度组件/模块(尽管您可以选择$templateCache
直接加载).该$templateCache
重建每次重新加载应用程序时,它不跨浏览器持久.
angular之所以这样做是因为您可能会为多个模板重复使用相同的html文件(或者它可能会在您的网站上多次出现,例如使用指令时).这允许angular知道它已经具有该片段并且可以从缓存加载它.
几个问题的答案
这两个缓存如何与HTTP请求交互?
您无法缓存$.ajax
或$http
请求,但这只会影响获取静态内容,如javascript文件,css文件和图像.浏览器缓存的优势在于它可以改善用户体验/性能.如果他们昨天刚刚在您的网站上,他们不必等待下拉所有相关的静态内容.
angularjs $ templateCache根本不与http交互.虽然资源可能来自http提取,但您的浏览器可能会缓存该文件.Angular正在选择组织和跟踪html的那些片段.
为了更好地举例说明这个片段:
angular.module('directivesModule').directive('mySharedScope', function () { return { template: 'Name: {{customer.name}}
Street: {{customer.street}}' }; });
$templateCache
即使html在指令定义中是内联的,上面模块中的模板仍然会将其html添加到angular .
一般使用缓存有什么缺点(缓存文件或来自HTTP请求的响应)
在静态内容的更新版本中,您必须要小心.您可以通过各种类型的缓存清除来解决这个问题.
例如: 你更新你的myapp.js,现在它是1.2用户浏览器现在不会这样,他们会加载旧版本的网站.
要解决此问题,您可以更改名称.这将强制用户浏览器获取最新的文件.
恩.myapp_1.1.js到myapp_1.2.js
同样,angularjs
$templateCache
它不受此影响,因为它不是持久性的.