0

在一个名为“assets”的目录中大约有 10 个文件,这些文件是浏览器主布局中各种 img 标签所需的。

发送 10 个单独的请求以获取单独的小图像文件。(最终我会优化这个,只发送一个请求来加载一个包含所有图像的单个图像表)

但有时无法加载所有这些,因此浏览器会显示旋转/加载图标很长时间,直到它超时或加载它们但它们是错误的顺序/匹配(img 标签将显示错误的图像)或它只是不加载图像,每次我刷新页面时它的行为都不同

//first request gzips and loads the main layout, subsequent requests loads images

require('fs').readFile('assets/'+params.file, function(err, data) {
  if(err) throw err;
  if(params.file == 'layout.html') {
  require('zlib').gzip(data, function(err, buffer) {
    if(err) throw err;
    output(buffer, params);        
   });
  } else output(data, params);
});


function output(data, params){ 
  switch(params.file.substring(params.file.length-3)) {
    case 'tml': params.headers = {'Content-Encoding': 'gzip'};break;
    case 'ico': params.headers = {'Content-Type': 'image/x-icon'};break;
    case 'ttf': params.headers = {'Content-Type': 'application/x-font-ttf' }; break;
    case 'otf': params.headers = {'Content-Type':'font/opentype'};break;
    case 'png': params.headers = {'Content-Type':'image/png'};break;
    case 'gif': params.headers = {'Content-Type':'image/gif'};break;
    case 'peg':
    case 'jpg': params.headers = {'Content-Type':'image/jpeg'};break;
    default: params.headers = {};
  }
  params.headers['Set-Cookie'] =  '';       
  params.responseOutput(data, params);
}

这感觉有点像那些讨厌的“关闭”问题,但这里没有 forloops 并且来自浏览器的每个图像请求都不应该干扰另一个(..然而它是)

4

1 回答 1

1

某些请求有时会提供错误文件的事实表明您确实存在关闭问题,很可能涉及在or回调执行params之前进行更改。它的范围是什么,你如何构造它(另一种可能性是它本身的范围是正确的,但它包含对不是的东西的引用)?readfilegzipparams

于 2012-10-11T18:01:23.530 回答