在局部视图内加载Angular脚本——缓存问题
Angular Script Loading inside partial view - caching issues
我在Angular应用程序的局部视图中加载javascript时遇到了问题。
这是我的设置:ui-router
设置ui-view
请求/profile
为<app-home-profile></app-home-profile>
。
appHomeProfile
指令设置如下:
app.directive('appHomeProfile', function() {
return {
restrict: 'E',
templateUrl: 'templates/user/profile.html',
controller: ...,
controllerAs: 'profileCtrl'
}
});
现在,在profile.html
文件中,我包含了标准的HTML和在它的底部一些JavaScript依赖项:
<script type="text/javascript" src="/javascripts/myScript1.js"></script>
<script type="text/javascript" src="/javascripts/myScript2.js"></script>
问题是服务器日志显示Angular正在向请求中添加时间戳,因此不允许缓存任何脚本!在文档的head
中以"通常"方式加载的脚本不会发生这种情况。
GET /javascripts/myScript1.js?_=1437207405398 200 2.356 ms - 22524
GET /javascripts/myScript2.js?_=1437207405399 200 1.873 ms - 29695
任何关于如何解决这个问题的帮助是感激的!
谢谢,尼克
与jQuery相反,由于jqLite的简化实现,Angular在请求的模板中不支持<script>
。可以这样修改
它在你的例子中工作的原因是因为你在你的应用程序中使用jQuery,所以它管理DOM而不是jqLite。添加AJAX请求中的时间戳是为了禁用浏览器缓存,这是jQuery的默认行为。可以使用
禁用。app.config(function () {
angular.element.ajaxSetup && angular.element.ajaxSetup({ cache: true });
});
相关文章:
- 将脚本缓存到本地存储的basket.js概念仍然是一个好主意吗
- 浏览器是否持久缓存脚本元素的编译版本
- ASP.NET IIS应用程序中的客户端脚本缓存
- Chrome没有加载最新版本的web工作程序脚本(运行缓存版本)
- 从 PHP 脚本预缓存第二个图像
- 使用脚本缓存图像
- Javascript在不更改脚本标记的情况下阻止缓存
- 如何删除谷歌脚本中的谷歌缓存
- 咖啡脚本和浏览器缓存
- 外部脚本缓存
- 不缓存脚本的跨子域加载
- 缓存 Web 应用中的所有脚本
- AJAX 和 PHP:如何停止缓存脚本
- 使用构建脚本缓存CSS文件
- Google Apps脚本缓存大数据
- 脚本缓存篮.js,我做错了什么
- MVC应用程序的脚本缓存策略
- 在局部视图内加载Angular脚本——缓存问题
- 使用Javascript进行脚本缓存的最佳实践
- Rails 3.1中的第三方脚本缓存