0

我刚开始使用 node,我想用 socket IO 构建一个单页 web 应用程序。我构建了一个简单的服务器代码:

http.createServer(function(req, res) {

    //Requested url split.
    var pathname = url.parse(req.url).pathname;
    var extension = path.extname(pathname).toLowerCase();

     console.log(pathname + " " + extension);

    if(extension == ".png"){
        res.writeHead(200, {
            'Content-Type': 'image/png'
        });  
   }
}

我像这样提供所有文件,还有其他“else if”案例用于提供 html、css 和 js 文件......

使用 Mozilla 一切正常。使用 Chrome,我遇到了两个问题:

没有缓存 -> 每次我在客户端 js 代码中使用它们时都请求相同的图像,即使我使用 Image() 对象进行了一些预加载。无法访问加载的图像属性 -> 我无法获取 image.width() 或高度(返回 0)。在 Firefox 缓存工作上,我可以获得图像属性。

使用 apache 服务器在两种浏览器上一切正常。

我完全被卡住了,知道吗?

4

2 回答 2

1

关于缓存,请尝试在代码中为静态文件显式设置缓存标头。

于 2012-09-25T09:45:48.090 回答
1
res.writeHead(200, {
    "Cache-Control" : "max-age=86400",
    'Content-Type': contentType
});

问题已解决(两者)!但这是否意味着如果用户禁用他的缓存,他会向我的服务器发送大量文件请求?

除了缓存之外,还有什么方法可以在本地存储文件吗?就像将图像存储在 JS 变量中一样?

或者其他实现这一目标的方法?

于 2012-09-25T12:10:47.033 回答