我在Azure上运行了一个网站。在那里,我正在玩Knockout.JS组件和自定义加载器。我在这里找到了一个非常简单的KO文档示例:
(使用自定义代码加载外部文件的组件加载器) http://knockoutjs.com/documentation/component-loaders.html#custom-component-loader
// loader helper
var templateFromUrlLoader = {
loadTemplate: function(name, templateConfig, callback) {
if (templateConfig.url) {
var today = new Date();
var fullUrl = templateConfig.url + "?v=" + today.getTime();
$.get(fullUrl, function(markupString) {
ko.components.defaultLoader.loadTemplate(name, markupString, callback);
});
} else {
callback(null);
}
}
};
// component is registered
ko.components.register('postcode-lookup', {
viewModel: function() {
// component js
},
template: {
url: 'https://www.purplebricks.com/content/lib/component-postcode-lookup/dist/component/templates/postcode-lookup.html'
}
});
ko.components.loaders.unshift(templateFromUrlLoader);
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/knockout/3.4.0/knockout-min.js"></script>
现在,在本地,一切都运行良好,每次刷新页面时,都会获取组件模板:
并且响应的预览在这里:
将页面部署到暂存/现场制作时会出现问题。它会在第一次对每个人都很好,但是一旦你刷新页面,模板返回空白响应的概率非常高=几乎90%。它显然是缓存的,响应代码变为304未修改,但响应为空。我已经尝试添加一个查询字符串,为它添加一个时间戳 - 它几乎与0差异。现在我有一个200状态代码,但是请求的时间进入待定状态并且似乎永远持续下去:
几乎感觉Azure正在缓存这个错误,也许是DNS问题?
答案 0 :(得分:1)
这似乎是由于gzip标头设置不正确,请尝试将以下内容添加到路由配置中,以防止ASP.NET MVC处理静态内容:
routes.IgnoreRoute("Content/{*pathInfo}");