禁用Angular 2中的路由缓存

时间:2016-03-28 15:56:46

标签: angular

我有一个带有一些异步路由的路由器。它到目前为止工作得很好,但我遇到的一个问题是它没有重新加载javascript文件。

目前我正在使用这样的加载器(使用$ script.js来获取和执行JS文件):

new ng.router.AsyncRoute({
    path: '/' + pName + '/' + entryName,
    loader: () => {
        let q = new Promise(function(resolve) {
            console.log("Loading...");
            $script(['js/' + pName + '/' + entryName + '-c.js'], function() {
                resolve();
            });
        });
        return q.then(() => app[pascalCase(fullName) + "Cmp"]);
    },
    name: pascalCase(fullName),
    useAsDefault: false,
})

但是,console.log("Loading...")仅在我导航该路线时才会执行,但不会在以后的任何时间执行。

这是一个问题的原因是因为答:我希望页面完全重置为开始(我不仅有Angular组件,还有自定义Javascript)和B:我想摆脱内存中的所有组件和其他对象,因为我不希望用户浏览器在他使用我的网站的时间越长就越来越多(因为它相当大)。

Angular UI路由器上的iirc Angular 1我可以禁用缓存来强制重新加载,但是如何在Angular 2上实现这一点呢?

1 个答案:

答案 0 :(得分:0)

您可以做的是告诉它不要通过发送相应的标头或使用这些元标记来缓存您的页面:

<meta http-equiv="Cache-control" content="no-cache">
<meta http-equiv='expires' content='0'>
<meta http-equiv='pragma' content='no-cache'>

这对于进行硬重装也有帮助

location.reload(true);