Bạn cần phải viết trình chặn và "bắt" tất cả các yêu cầu mẫu - bạn sẽ có thể trong trình chặn này để thêm thông số URL có thể phiên bản nội dung mẫu của bạn.
Ví dụ:
// App .config()
$httpProvider.interceptors.push(function($templateCache) {
return {
'request' : function(request) {
if($templateCache.get(request.url) === undefined) { // cache miss
// Item is not in $templateCache so add our query string
request.url = request.url + '?appVersion=' + appService.getConfig().version;
}
return request;
}
};
Bạn sẽ tất nhiên cần phải cập nhật cấu hình ứng dụng này mỗi khi bạn triển khai phiên bản mới của bạn (thông qua xây dựng các nhiệm vụ bạn có thể cập nhật file này tự động). Bạn có thể cần thêm các kiểm tra bổ sung (ví dụ: nếu so sánh nếu đường dẫn URL kết thúc bằng '.html'), do đó bạn chắc chắn rằng bạn không yêu cầu HTTP thực sự cao.
Mặt sau nhược điểm của phương pháp này là đôi khi bạn có thể có mẫu chưa được cập nhật và bạn không muốn bộ nhớ cache của trình duyệt bị chuyển vào thùng rác. Nếu đây là trường hợp của bạn, sau đó bạn nên thêm một số loại md5 (templateContent) cho mỗi --- điều này có thể đạt được tại thời gian xây dựng thông qua Grunt/Gulp là tốt.
Nguồn
2015-10-06 12:40:22
Chỉ cần thêm kiểm tra 'if (request.url.endsWith (". Html ")) {...}' hoạt động như một sự quyến rũ! Tôi đã thử rất nhiều giải pháp cho vấn đề này và giải pháp này là tốt nhất cho trường hợp sử dụng của tôi. – hmartos
@hmartos Hãy cẩn thận, .endsWith không được hỗ trợ tốt trên tất cả các trình duyệt và nền tảng. – tuks