我希望使用 CDN 来传递我们所有的图像文件。我们通过简单地使用 CDN 的域而不是我们自己的域来调用图像。我可以在我们的内容管理系统中轻松更改域引用,但是预览会中断,因为它正在寻找尚未出现在我们的外部服务器上的图像,以便我们的 CDN 从中提取。我们一发布,CDN 就有一个要拉取的图像。
我在想我可以在我们的外部站点 .htaccess 文件中添加一条规则,以将任何对图像的请求从我们的 /webfiles 文件夹重定向到我们 CDN 上的适当文件夹。我意识到当 CDN 尝试获取图像时,它会被发送回自己的服务器,所以我添加了一个引用行,这样只有来自我们服务器的请求才会提取 CDN 版本。在我得到一些有见地的反馈之前,我不愿意在我们的实时服务器上尝试这个。这种方法有意义吗?这是正确的顺序吗?(我会先使用 302 进行测试。)
RewriteCond %{HTTP_REFERER} ^https://www.example.com [NC]
RewriteCond %{REQUEST_URI} ^\.(jpg|jpeg|png|gif|webp)$ [NC]
RewriteCond %{HTTP_HOST} ^(.*)www.example.com/webfiles/$ [NC]
RewriteRule ^(.*)$ http://example-cdn.com/webfiles/$1 [R=301,L]
添加这样的重定向在许多方面破坏了 CDN 的目的。当客户端请求图像文件时,它们首先向您的服务器发送请求,服务器以重定向响应,然后客户端从 CDN 请求它。
这为图像加载增加了相当大的延迟。
您应该更改 CMS,以便在预览中它使用来自您服务器的 URL,但对于前端,它使用指向 CDN 的 URL。