PHP中的动态图像生成

时间:2010-01-08 23:55:04

标签: php javascript image-processing

我正在开发一个脚本,允许人们生成一个横幅供他们使用。它是可定制的。在定制过程中,我希望能够在现场重新加载横幅。所以他们可以看到变化。一旦他们创建横幅并完全使用它,我会给他们一个链接供他们使用。此链接是横幅的缓存版本,并且会经常重新缓存。有什么方法可以阻止他们滥用我的现场生成以防止过多的服务器负载?有没有办法可以让它变成只有我的JavaScript可以重新生成它?

4 个答案:

答案 0 :(得分:1)

您可能需要防范过于频繁加载的图片,无论这是来自滥用还是来自实际访问者太多。您可以为每个图像分配给定时间段内的最大刷新次数(取决于您希望服务器加载的次数),并为每个请求确定是应生成文件还是返回静态错误图像。

答案 1 :(得分:1)

综合测井&会话跟踪将有助于解决问题。您可以使用会话变量来跟踪每个用户的横幅生成用法。通过记录来自每个IP地址的活动来支持这一点。拒绝来自大量使用用户和IP地址的过多请求。

我想可能已经存在软件&用于管理IP资源使用情况的硬件工具,您无需为应用程序自定义编码即可插入。我也会尝试在ServerFault上提出这个问题。

答案 2 :(得分:1)

您可以check the referer确保对您的即时代码的请求来自您的网站而不是热链接。

答案 3 :(得分:0)

这种事情几乎是我们<canvas>的原因之一。

使用<canvas>标签,您可以动态进行图像处理,而不会在服务器上放置任何负载(事实上,服务器完全不知道这种图像处理)。然后,完成后,您实际上可以从画布中获取原始图像数据并将其放在<img>标记中,或将其提交到服务器,或者您可以对图像执行的任何其他操作。

如果您可以通过回退到目前的状态(以及其他答案提出的建议)来实现这一点,那么您将达到良好的平衡。