我们正在努力进一步提高一些旧的HTML网站的速度,以获得更好的SEO结果。 我们现在已经应用了一些缩小措施,结合HTML,CSS等我们使用一个小的虚拟化基础设施,我们一直希望使用轻+标准HTTP服务器configuration,所以第一个可以提供图像和静态内容与另一个PHP ,重写等。我们可以很容易地使用虚拟机,使用相同的文件和虚拟主机(绑定挂载)在Apache的conf,但几乎没有任何模块加载。 这意味着光照httpd将有更小的指纹,使我们能够更快,更快地运行,有更多的minSpareServer运行等。
因此,当浏览器也从加载来自不同主机名称的静态内容中受益时,我们已经考虑在我们的主服务器(main.com)上build立一个重写规则来“redirect”所有图像和css * .jpg,* .gif,* .css等相同的说cdn.main.com因此浏览器能够有更多的连接。
问题是,假设我们已经有一个非常复杂的重写规则集(我们手动操纵许多旧的URL来search引擎优化)是否值得?
我的意思是将主要的Apache的额外负载必须redirectmain.com/image.jpg(我明白,我们将不得不做一个301)cdn.main.com/image.jpg +然后cdn.main.com有为了达到这个目标,要比我们在浏览器上存档的收益大吗?
一个页面上的所有图像的301多余可以通过谷歌惩罚?
大公司如何解决这个问题,原始代码是否已经包含了从cdn链接到绝对path的图像?
编辑只是为了澄清,我们的关注是不要做太多与服务器性能或带宽。 我们显然可以使用外部CDN服务器,但是我们有足够的CPU和带宽。
我们所关心的是如何让拥有大量半静态HTML内容的“旧”网站受益于通过Apache分割图像和静态内容的连接,而不必将html更改为绝对path(即image.jpg至cdn.main.com /image.jpg发生在服务器上而不是代码)
redirectmain.com/image.jpg(我明白我们必须做一个301)到cdn.main.com/image.jpg
这是一个坏主意,不要这样做。
你长期以来的问题是难以遵循的。 据我所知,你担心服务器负载,而不是你的最终用户的网站加载速度。
如果您担心服务器容量,则可以:
从而使浏览器能够有更多的连接。
浏览器并行下载限制是一点红鲱鱼 – 现代浏览器从相同的主机名下载6-8文件并行 。 只有老的浏览器(IE6,IE7)真的受到这个限制。
如果您担心最终用户的网页加载速度,那么请使用CDN,在所有情况下,您的用户分布在广泛的地理区域(即您拥有全球用户)时,这是一个很好的build议。
一个页面上的所有图像的301s是由谷歌惩罚?
有可能。 但更有可能的是,它会受到你的用户的讨厌。 对于每个图像请求,您首先提供301,然后从另一个URL正确的图像。 这意味着每个图像需要2次往返服务器,因此用户的页面加载时间将大大延长。
在过去的几个星期里,我一直在我公司玩过类似的问题。 请记住一些事情:
通常情况下,每月使用20TB可用带宽的服务器成本要比CDN收取相同数量的stream量费用要less得多(好吧,由于CDN的传播速度可能更快,但在任何情况下都不便宜)
无论如何,我正在尝试以下设置(如果您认为我可能在这里有什么问题,请评论这个)
有http://www.server.com运行所有的PHP / MySQL的东西,并提供static.server.com所有的静态文件(图像,CSS等)。 (我已经设置了所有的基础url地址的variables,所以我可以改变他们的意志)在static.server.com将有一个重写规则,以检查图像是否存在本地,如果没有,从http://www.server .com通过shell脚本/ scp / rsync命令。 然后,下一次它将被要求,它将已经在那里。 因此,该特定图像/文件不需要第二重写规则。 您将始终可以select只更改一个保存静态内容path的variables,并再次从主服务器提供所有内容。 图像也将在那里。
这样,图像调用直接到我的静态服务器和所有其他的东西去的PHP / MySQL之一。 如果你不在静态服务器上运行任何PHP,那么进程将不会变得非常大,所以你可以有更多的服务器并行运行来为你的映像服务,并且不会占用主计算机的带宽。
如果你看到很多CPU在你的静态服务器上浪费了,你可以随时移动你的mysql,这样你就可以平衡两者之间的负载。
对于上面的例子,你可以检查一下(这几乎是一样的)
http://mrphp.com.au/code/image-cache-using-phpthumb-and-modrewrite
编辑:我说的是在这里使用两个单独的服务器(和物理位置足够接近的情况下,mysql在另一台服务器上)
我应该在上面添加的另一件事是你可以在static.server.com上有一个DNS条目指向你想要的任何服务器。 (即使与应用程序的其余部分一样)。 所以你可以硬编码静态内容的地址,例如static.server.com/image1.jpg 。 应用上面的解决scheme只需要设置DNS条目,将static.server.com域指向您的caching机器。