3

我正在开发一个大型 asp.net 网络项目,在过去几年中,该项目有许多不同的开发人员/顾问对其进行了更改。我注意到根据开发人员的不同,图像和其他静态内容的路径可能包含正确的大小写、全部小写或完全随机的内容。由于大小写不同,浏览器似乎对同一资产发出了多个请求。例如 -

<!DOCTYPE html>
<html>
<head>
    <title></title>
</head>
<body>
    <img src="http://cdn.sstatic.net/stackoverflow/img/sprites.png" />
    <img src="http://cdn.sstatic.net/stackoverflow/Img/sprites.png" />
</body>
</html>

除了搜索项目中的每个图像和规范化外壳之外,这里还有什么可以做的吗?也许我可以在页面响应标题中添加一些东西来告诉浏览器忽略大小写等。

4

1 回答 1

0

好吧,浏览器(不仅仅是 Chrome 这样做,任何没有问题的浏览器)必须这样做,因为它无法知道您碰巧使用了不区分大小写的映射,<http://cdn.sstatic.net/stackoverflow/img/sprites.png>因此<http://cdn.sstatic.net/stackoverflow/Img/sprites.png>完全不同的 URI。

你可以做几件事。

首先查找-替换以下内容:

  1. 特别常用。
  2. 特别重的文件。
  3. 特别常见的拼写错误。
  4. 不太可能导致您查找替换破坏不相关代码的内容。

您可以做的另一件事是在处理程序中强制对案例进行规范化,当针对与您的案例规范化规则不匹配的 URI 调用该处理程序时,将 301 转换为匹配的形式。这意味着与其抓取 3 个不同的 10kb 图像,您将抓取 1 个 10kb 图像并具有 2 或 3 个数百字节的重定向。也就是说,低于某个文件大小,额外请求的成本超过了节省的成本。

最后,您可以使用过滤器(Response.Filter 设置为的流对象,写入 Response.Filter 的先前值)或 PreRender 步骤中扫描本地 URI 的代码(如果您更改其他 URI 的大小写)您可能会导致 404 的网站)并正确输出它们。

于 2011-12-12T20:19:45.030 回答