javascript - 通过 $.get 加载外部文件通常不会返回响应,即使响应代码是 200

标签 javascript jquery azure caching knockout.js

我有一个在 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>

现在,在本地,一切都很完美,每次刷新页面时,都会获取组件模板:

XHR status

响应预览如下:

XHR preview

将页面部署到临时/实时生产时会出现问题。每个人第一次都可以正常工作,但是一旦刷新页面,模板返回空白响应的概率就非常非常高 = 几乎 90%。显然是缓存了,响应代码变成304未修改,但是响应是空白的。我尝试添加一个查询字符串来添加时间戳 - 它几乎没有任何区别。现在我有一个 200 状态代码,但是请求的时间进入挂起状态并且似乎永远持续下去:

enter image description here

enter image description here

感觉 Azure 缓存的方式不正确,也许是 DNS 问题?

最佳答案

这似乎是由于 gzip header 设置不正确,请尝试将以下内容添加到路由配置中以防止 ASP.NET MVC 处理静态内容:

routes.IgnoreRoute("Content/{*pathInfo}");

关于javascript - 通过 $.get 加载外部文件通常不会返回响应,即使响应代码是 200,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36646831/

相关文章:

javascript - 人们还在为 Web 应用程序使用 Ajax 吗?

javascript - 我如何解析另一个 Observable 中的一个 Observable? - RXJS

javascript - 更改 iframe 目标

c# - 将数据上传到 Windows Azure 时收到 409 错误

部署到相同位置的 Azure 资源组和资源

azure - 如何在 Azure 表存储中进行自由文本搜索?

javascript - 当我们点击它时如何聚焦 Accordion 顶部标题

javascript - 在 Javascript 中使用矩阵过滤器

javascript - 使用 wp_enqueue_script() 在 Wordpress -functions.php 中添加 Javascript

javascript - js变量作用域问题