像使用mod_rewrite的Cloudflare一样使用CDN来节省带宽

我知道像Cloudflare这样的CDN通过将静态文件caching为图像,JS和CSS文件来节省带宽。

我有一个脚本,dynamic生成图像,其位置如下所示:

http://domain.com/image.php?id=1 

id是图像ID。 由于dynamicURL,Cloudflare不会caching这些图片。 如果我添加一个mod重写规则来重写URL成为类似于:

 http://domain.com/images/1 

要么

 http://domain.com/images/1.jpg 

在这种情况下,CloudFlare会caching图像,还是图像实际上是驻留在目录中的真实文件?

cachingCloudFlare中给定端点上的所有内容的最简单方法是使用caching一切页面规则 ,星号将匹配通配符结果。 所以在你的第一个例子中,我们可以做如下的事情

CloudFlare缓存端点上的所有内容

caching一切只能使用页面规则来启用,所以上面的例子在绝大多数情况下是最好的,但是也可以在CloudFlare中设置一个通用的规则来处理查询string。

您可以在CloudFlare仪表板的“caching”选项卡中全局执行此操作,默认情况下,“标准”选项将根据查询string对资源进行caching。

在CloudFlare中设置缓存级别

我会从你的问题的结尾开始,并挖掘我的方式。 所以首先,代理(Cloudflare的行为就像一个)无法区分静态内容和dynamic生成的内容,响应实际上是相同的。 唯一的区别可能是扩展请求的文件,并根据服务器发送的caching规则。 Cloudflare默认只caching具有特定扩展名的文件。

这就是说,是的,你的两个例子都将被Cloudflarecaching( 除非 Cache-Control头被设置为“private”,“no-store”,“no-cache”或者“max-age = 0”响应中有一个cookie)。

另一件事是,默认情况下,Cloudflare甚至caching查询string的请求。 每次查询string更改时,它都会提供不同的资源。 只要扩展名是正确的,或者页面规则明确指定caching而不pipe扩展名是什么,在使用查询string时都没有问题。