一些设置:
我们有一些公开的静态图像。但是,我们希望能够在图像标记中使用备用URL引用这些图像。 因此,例如,我们有一个带有以下URL的图像:
http://server.com/images/2/1/account_number/public/assets/images/my_cool_image.jpg
而且,我们希望将其插入前面的html中:
<img src="http://server.com/image/2/my_cool_image.jpg">
而不是
<img src="http://server.com/images/2/1/account_number/public/assets/images/my_cool_image.jpg">
我们提出的一个非常巧妙的解决方案是使用301重定向。现在,我们的测试已经提供了一些非常简洁的结果(所有当前一代浏览器都可以工作),但我想知道这种方法是否有一些警告我可能会丢失。
编辑:澄清一下,我们想要使用这种方法的原因是我们还计划使用外部主机来提供资源,我们希望能够偶尔关闭它。所以,也许是
中的URLhttp://client.com/image/3/cool_image.jpg
除了“默认”访问方式
之外答案 0 :(得分:13)
另一种不需要服务器往返的技术是使用HTTP服务器相当于"rewrite engine"。这允许您在服务器配置中指定通过发送某些其他 URL的结果来满足对一个URL的请求。这比告诉浏览器“不,去看看那里”更有效。
答案 1 :(得分:2)
一个可能的缺点可能是搜索引擎优化 - 具有通用文件夹名称的长而复杂的文件名可能会阻碍更短/更快的URL。
但主要问题是每个图像都会有额外的HTTP请求。通常,您应该尝试最小化HTTP请求以提高性能。我认为你应该像其他人所说的那样将URL重写为幕后的更长版本。
您不必使用最终网址重写整个网址。如果你想要更多的灵活性,你可以像这样重写图像:
http://server.com/image/2/my_cool_image.jpg
重写为:
http://server.com/getImage?id=2&name=my_cool_image.jpg
然后“getImage”脚本将读取配置文件,或者在server.com上提供较长名称的文件,或者从client.com提供另一个文件。你只有一次服务器之旅和服务器本身的一小部分开销,访问者无法察觉。
答案 2 :(得分:1)
唯一真正的缺点是第二次DNS查找和计算重定向的一点服务器开销,这两者都会影响性能。否则我无法想到这种技术的任何问题。