这些天我们可以指定在我们网站头部的不同设备专用的图标,启动图像,平铺图像等特定的船载。几乎每个版本都需要自己的元标签来指定其目标和分辨率,例如。可以/应该使用参数链接到网站图标,图块等?
<link rel="icon" type="image/png" href="/icons/icon-32.png" sizes="32x32" />
<link rel="apple-touch-icon-precomposed" href="/icons/icon-152.png" sizes="152x152"/>
<link rel="apple-touch-icon-precomposed" href="/icons/icon-180.png" sizes="180x180"/>
<meta name="msapplication-TileImage" content="/icons/tile-270x270.png"/>
这是一些样板,但模板可以处理。但是让我们假设我使用了一个稍微复杂一点的网络服务器,并且实际上需要所有这些路由的代码。也许我想动态地对图像做些事情,比如第一次请求时懒懒地生成图标分辨率,或者计算它们被请求的频率或者有点像这样的东西。最简单的方法是使用一个只需通过get-parameters获取细节的处理程序。所以链接现在看起来像这样:
<link rel="icon" type="image/png" href="/icon.png?h=32&w=32" sizes="32x32" />
<link rel="apple-touch-icon-precomposed" href="/icon.png?h=152&w=152" sizes="152x152"/>
<link rel="apple-touch-icon-precomposed" href="/icon.png?h=180&w=180" sizes="180x180"/>
<meta name="msapplication-TileImage" content="/icon.png?h=270&w=270&s=tile"/>
从后端程序员的角度来看,这个解决方案看起来非常优雅。但是,如果没有重写规则,以这种方式公开实现细节实际上是个好主意吗?
从我看过的所有文章看来,主要浏览器中的url解析代码处理元标记与处理所有其他链接相同,所以额外的参数应该不会成为问题。但也许我忽视了一个哲学不同的人呢?
那么缓存呢?理论上,参数不会改变,所以图标仍然可以缓存 - 但我可以理解为什么浏览器会选择不这样做。另一方面,图标缓存可能有不同的规则,因为它非常重要?
当然,我可以尝试一下,但如果你有这种方法的经验,它可以防止我盲目走下错误的轨道。