我有一个在 Windows WebServer 2008 上运行的应用程序。它会生成缩略图,然后将其缓存在磁盘上。
但是加载这些静态缩略图需要花费一些时间,因为我的网络速度不慢。例如,Firebug 告诉我大多数缩略图(大小在 30 - 50 kb 之间)需要 600 毫秒到 1.2 秒才能加载。而且几乎整个时间都花在“等待响应”上。因此我怀疑服务器响应太慢了。有没有办法通过 IIS 7 优化静态内容的服务?
答案1
较新的浏览器(IE8、Chrome)已将每个服务器的最大连接数提升到 6 个,这是一个好趋势。
但是,要绕过 2 个连接的限制(无需更改浏览器配置),您可以使用一个技巧,即在指向 Web 服务器的 DNS 中创建多个 CNAME(别名)。然后在您的应用中,使用模式化(或随机)的 HREF 生成图像标签,这些 HREF 利用了您的所有信息。这会欺骗浏览器,使其认为图像来自不同的来源,然后一次打开 2 个以上的到您网站的连接。这不一定有助于缩短单张图片的服务时间,但可以缩短整体页面加载时间。
在采用此技术之前,您需要考虑以下几点:
- 这将如何与应用程序的缓存机制配合使用。最终,您可能会获得更大的图像缓存
- 你需要关注 Web 服务器上的并发连接数,因为并发会话数保持不变,而并发连接数会增加
有大量帖子详细解释了这项技术。这是 DevCentral 上的一篇好文章:
网络历史上第三大(有用的)黑客攻击
答案2
我不确定 IIS 7 是否适用,但您可能应该从不同的域加载图像,这样浏览器就可以尝试并行加载它们。浏览器(取决于浏览器)一次只会尝试从 1 个域加载 2 个文件。我相信如果文件来自不同的域,Firefox 会尝试一次加载最多 6 个文件。我还建议使用更轻量的 Web 服务器来处理静态内容,例如 nginx。我知道这可能不是您想要的答案,但也许会有所帮助。