更新angularjs中的index.html

时间:2017-02-18 03:18:27

标签: javascript html css angularjs nginx

目前我们在angularjs的网站没有更新最新的javascript版本而没有做硬刷新是浏览器。为了实时更新它,我们已经开始在我们的rest API中发送自定义标头(APP-VERSION),我们可以根据该标准重新加载页面,从而导致通过最新的javascript版本更新网站。 这个版本的比较代码用javascript编写,是HTTP拦截器,在客户端没有更新。 为了更新index.html,我们尝试了各种方案,如下: - 1.我们已将index.html的名称更改为default.html,但仍未在客户端更新。 2.我们已经改变了index.html的路径(/test/index.html),但仍无法正常工作。 3.我们在每个页面都使用了页面脚本,我们收到了警告"尝试加载angularjs两次"。 4.我们在nginx上的配置文件中添加了自定义标头(add_header Cache-Control no-cache;),这也是无效的/

请帮助我们如何在客户端强制更新index.html。

请找到代码index.html,HTTPInterceptor和route.js

index.html的: -

<!DOCTYPE html>
<html>
<link href="images/favicon.ico" rel="shortcut icon" type="image/x-icon">
<link href="https://fonts.googleapis.com/icon?family=Material+Icons"
    rel="stylesheet">
<link rel="stylesheet"
    href="https://cdnjs.cloudflare.com/ajax/libs/WebRupee/2.0/font.min.css" />
    <link href="https://fonts.googleapis.com/css?family=Noto+Sans" rel="stylesheet">
<!--<link rel="stylesheet" href="http://kendo.cdn.telerik.com/2016.2.504/styles/kendo.common.min.css"/>
    <link rel="stylesheet" href="http://kendo.cdn.telerik.com/2016.2.504/styles/kendo.rtl.min.css"/>
    <link rel="stylesheet" href="http://kendo.cdn.telerik.com/2016.2.504/styles/kendo.silver.min.css"/>
    <link rel="stylesheet" href="http://kendo.cdn.telerik.com/2016.2.504/styles/kendo.mobile.all.min.css"/>
 -->
<link rel="stylesheet" href="/css/mrConsultant.min.css?ver=@@cssVer">
<!-- <link rel="stylesheet" href="css/preLoginPartner.css"> -->
<meta name="viewport" content="width=device-width, initial-scale=1">
    <base href="/">
<!-- Google Tag Manager -->
<script>
@@gtmScript
</script>
<!-- End Google Tag Manager -->

</head>
<body ng-app="myApp" ng-cloak layout="column">

    <div flex layout="column">
        <div ng-view flex layout="column"></div>
    </div>

<!-- Google Tag Manager (noscript) -->
<noscript>
@@gtmNoScript
</noscript>
<!-- End Google Tag Manager (noscript) -->

</body>


<script type="text/javascript" src="js/mrConsultant.min.js?ver=@@jsVer"></script>
<!--<script src="http://kendo.cdn.telerik.com/2016.2.504/js/kendo.all.min.js" ></script>
<script src="http://kendo.cdn.telerik.com/2016.2.607/js/kendo.timezones.min.js" ></script>-->
<!--<script src="https://cdnjs.cloudflare.com/ajax/libs/ngStorage/0.3.6/ngStorage.min.js" async></script>-->
<script src="http://ngmaterial.assets.s3.amazonaws.com/svg-assets-cache.js"></script>
<!--<script src="//ajax.googleapis.com/ajax/libs/angularjs/1.5.0-beta.2/angular-sanitize.js"></script>-->
<script src="https://cdnjs.cloudflare.com/ajax/libs/angular-sanitize/1.6.1/angular-sanitize.min.js"></script>
<noscript>test scritp</noscript>
</html>

HTTPInterceptor: -

myApp.factory('HTTPInterceptor', ['$location','$q','API_URL','version','CookieService','$templateCache','$window',function ($location,$q,API_URL,version,CookieService,$templateCache,$window) {
    return {
        'request': function (config) {
            if ((config.url.indexOf('.html') ==-1) && (config.url.indexOf('.svg')==-1)) {
                config.url = API_URL + config.url;
                if ((config.url.indexOf('/forgot-password-consultant')==-1) && (config.url.indexOf('/reset-password-consultant')==-1)) {

                    config.headers['Authorization'] = CookieService.getCookie('AUTH_TOKEN');
                }

                config.headers['Accept'] = "application/vnd.refer.v1+json";
            }
            return config;
        },
        'response': function (resp) {
            function createCustomAlert() {
                d = document;
                if(d.getElementById("website-update")) return;

                mObj = d.getElementsByTagName("body")[0].appendChild(d.createElement("div"));
                mObj.id = "website-update";
                style = mObj.appendChild(d.createElement("style"));
                style.innerHTML = "@import url('https://fonts.googleapis.com/css?family=Roboto')";

                alertObj = mObj.appendChild(d.createElement("div"));
                alertObj.id = "website-update-card";

                h1 = alertObj.appendChild(d.createElement("h1"));
                h1.appendChild(d.createTextNode("UPDATE ALERT"));

                msg = alertObj.appendChild(d.createElement("p"));
                msg.innerHTML = "A new version of Refer is available now. Update now for better performance.";
                msg1 = alertObj.appendChild(d.createElement("p"));
                msg1.innerHTML = "If you are on an important task, continue your work and you can update on next page.";

                updateBtn = alertObj.appendChild(d.createElement("button"))
                updateBtn.id = "website-update-btn";
                updateBtn.innerHTML = "Update Now";
                updateBtn.onclick = function() { clearTemplateCache();return true; }

                notUpdateBtn = alertObj.appendChild(d.createElement("button"))
                notUpdateBtn.id = "website-update-notnow";
                notUpdateBtn.innerHTML = "Not now";
                notUpdateBtn.onclick = function() { removeCustomAlert();return false; }
            }

            function removeCustomAlert() {
                document.getElementsByTagName("body")[0].removeChild(document.getElementById("website-update"));
            }

            function clearTemplateCache() {
                document.getElementsByTagName("body")[0].removeChild(document.getElementById("website-update"));
                $templateCache.removeAll();
                $window.location.reload();
            }

            if (resp.status === 401) {
                $templateCache.removeAll();
                $window.location.reload();
                $location.path('/logout');
            }/*else if(resp.status === 200 && resp.headers('app-version') != null && resp.headers('app1-version') != version){
                createCustomAlert();
            }*/
            return resp;
        },
        'responseError': function (rejection) {
            if(rejection.status === 401) {
                $templateCache.removeAll();
                $location.path('/logout');
            }
            return $q.reject(rejection);
        }
    };
}]);

myApp.config(['$httpProvider', function ($httpProvider) {
    $httpProvider.interceptors.push('HTTPInterceptor');
}]);

route.js: -

myApp.config(['$routeProvider', '$locationProvider', function ($routeProvider, $locationProvider) {

    if(window.history && window.history.pushState){
        $locationProvider.html5Mode({
            enabled: true,
            requireBase: true,
            rewriteLinks: true
        });
    }

    $routeProvider.when('/unicorn-:startups-:consultant-:register', {
        templateUrl: 'views/registerCampaign.html',
        controller: 'RegisterController',
        controllerAs: 'registerCtrl'

    }).when('/register', {
        templateUrl: 'views/register.html',
        controller: 'RegisterController',
        controllerAs: 'registerCtrl'

    }).when('/login', {
        templateUrl: 'views/login3.html',
        controller: 'LoginController',
        controllerAs: 'loginCtrl',
        resolve: {
            userInfo: ['$location', 'UserService', function ($location, UserService) {
                if (UserService.session()) {
                    $location.path('/jobs')
                } else {
                    $location.path('/login');
                }
            }]
        }

    }).when('/forgot-password', {
        templateUrl: 'views/forgotPassword.html',
        controller: '' +
        'forgotPasswordController'

    }).when('/reset-password/:token/:sm', {
        templateUrl: 'views/resetPassword.html',
        controller: 'resetPasswordController'

    }).when('/logout', {
        resolve: {
            auth: ['$location', 'UserService', function ($location, UserService) {
                UserService.logout();
                $location.path('/login');
                $location.replace();
            }]
        }
    }).when('/', {
        templateUrl: 'views/dashboard.html',
        resolve: {
            userInfo: ['$location', 'UserService', function ($location, UserService) {
                if (UserService.session()) {
                    $location.path('/dashboard')
                } else {
                    $location.path('/login');
                }
            }]
        }

    }).when('/dashboard', {
        templateUrl: 'views/dashboard1.html',

        resolve: {
            userInfo: ['$location', 'UserService', function ($location, UserService) {
                if (UserService.session()) {
                    $location.path('/dashboard')
                } else {
                    $location.path('/login');
                }
            }]
        }

    }).when('/jobs/:jobType', {
        templateUrl: 'views/jobs.html',
        resolve: {
            userInfo: ['$location', 'UserService', function ($location, UserService) {
                if (UserService.session()) {
                    templateUrl: 'views/jobs.html'
                } else {
                    $location.path('/login');
                }
            }]
        }

    }).when('/job-detail/:jobId', {
        templateUrl: 'views/job-detail.html',
        resolve: {
            userInfo: ['$location', 'UserService', function ($location, UserService) {
                if (UserService.session()) {
                    templateUrl: 'views/job-detail.html'
                } else {
                    $location.path('/login');
                }
            }]
        }

    }).when('/direct-apply/:jobId', {
        templateUrl: 'views/apply-new.html',
        resolve: {
            userInfo: ['$location', 'UserService', function ($location, UserService) {
                if (UserService.session()) {
                    templateUrl: 'views/apply-new.html'
                } else {
                    $location.path('/login');
                }
            }]
        }

    }).when('/performance', {
        templateUrl: 'views/performance.html',
        resolve: {
            userInfo: ['$location', 'UserService', function ($location, UserService) {
                if (UserService.session()) {
                    $location.path('/performance')
                } else {
                    $location.path('/login');
                }
            }]
        }

    }).when('/calendar', {
        templateUrl: 'views/calender.html',
        resolve: {
            userInfo: ['$location', 'UserService', function ($location, UserService) {
                if (UserService.session()) {
                    $location.path('/calendar')
                } else {
                    $location.path('/login');
                }
            }]
        }

    }).when('/tracker', {
        templateUrl: 'views/tracker.html',
        resolve: {
            userInfo: ['$location', 'UserService', function ($location, UserService) {
                if (UserService.session()) {
                    $location.path('/tracker')
                } else {
                    $location.path('/login');
                }
            }]
        }

    }).when('/internal-jobs', {
        templateUrl: 'views/internal-jobs.html',
        resolve: {
            userInfo: ['$location', 'UserService', function ($location, UserService) {
                if (UserService.session()) {
                    $location.path('/internal-jobs')
                } else {
                    $location.path('/login');
                }
            }]
        }

    }).when('/assigned-jobs', {
        templateUrl: 'views/assigned-jobs.html',
        resolve: {
            userInfo: ['$location', 'UserService', function ($location, UserService) {
                if (UserService.session()) {
                    $location.path('/assigned-jobs')
                } else {
                    $location.path('/login');
                }
            }]
        }

    }).when('/suggested-candidates/:jobId', {
        templateUrl: 'views/suggested-candidates.html',
        resolve: {
            userInfo: ['$location', 'UserService', function ($location, UserService) {
                if (UserService.session()) {
                    templateUrl: 'views/suggested-candidates.html'
                } else {
                    $location.path('/login');
                }
            }]
        }

    }).when('/suggested-apply/:jobId', {
        templateUrl: 'views/apply-suggested.html',
        resolve: {
            userInfo: ['$location', 'UserService', function ($location, UserService) {
                if (UserService.session()) {
                    templateUrl: 'views/apply-suggested.html'
                } else {
                    $location.path('/login');
                }
            }]
        }



    }).when('/edit-candidate/:jobId', {
        templateUrl: 'views/edit-candidate.html',

        resolve: {
            userInfo: ['$location', 'UserService', function ($location, UserService) {
                if (UserService.session()) {
                    templateUrl: 'views/edit-candidate.html'
                } else {
                    $location.path('/login');
                }
            }]
        }

    }).when('/database', {
        templateUrl: 'views/database.html',
        resolve: {
            userInfo: ['$location', 'UserService', function ($location, UserService) {
                if (UserService.session()) {
                    templateUrl: 'views/database.html'
                } else {
                    $location.path('/login');
                }
            }]

        }

    }).when('/database-search', {
        templateUrl: 'views/database-search.html',
        resolve: {
            userInfo: ['$location', 'UserService', function ($location, UserService) {
                if (UserService.session()) {
                    templateUrl: 'views/database-search.html'
                } else {
                    $location.path('/login');
                }
            }]

        }

    }).when('/database-search-result', {
        templateUrl: 'views/database-search-result.html',
        resolve: {
            userInfo: ['$location', 'UserService', function ($location, UserService) {
                if (UserService.session()) {
                    templateUrl: 'views/database-search-result.html'
                } else {
                    $location.path('/login');
                }
            }]

        }

    }).when('/review-compare', {
        templateUrl: 'views/review-compare.html',
        resolve: {
            userInfo: ['$location', 'UserService', function ($location, UserService) {
                if (UserService.session()) {
                    templateUrl: 'views/review-compare.html'
                } else {
                    $location.path('/login');
                }
            }]

        }

    }).when('/add-new', {
            templateUrl: 'views/add-contact.html',
            resolve: {
                userInfo: ['$location', 'UserService', function ($location, UserService) {
                    if (UserService.session()) {
                        templateUrl: 'views/add-contact.html'
                    } else {
                        $location.path('/login');
                    }
                }]
            }

        })
        .otherwise({
            redirectTo: '/'
        });

}]);

myApp.run(['$rootScope', '$templateCache', function ($rootScope, $templateCache) {
    $rootScope.$on('$viewContentLoaded', function () {
        $templateCache.removeAll();
    });
}]);

nginx设置: -

    location / {
    add_header Cache-Control no-cache;
    root   D:\refer-workspace\consultant_web;       
    try_files $uri $uri/ /index.html/ =404;
    expires -1;

    }

提前致谢。

0 个答案:

没有答案