2010-01-08 87 views
1

我正在开发一个脚本,允许用户生成一个横幅供他们使用。它是可定制的。在定制过程中,我希望能够现场重新加载横幅。所以他们可以看到变化。一旦他们创造了一面旗帜,并完成了它,我会给他们一个链接供他们使用。这个链接是横幅的缓存版本,每隔一段时间就会重新缓存一次。有什么办法可以阻止他们滥用我的现场世代来防止过多的服务器负载?有没有一种方法可以让我的JavaScript只能重新生成它?PHP中的动态图像生成

回答

1

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

+0

我也喜欢在每个图像的基础上限制刷新的想法。我可以将所有配置选项一起散列,但是它们会在db中添加一个时间戳,然后比较这些映像的未来使用情况。这里所有三个答案的组合可能会提供最好的结果。 – 2010-01-09 04:40:11

1

综合录井&会话跟踪将助阵的问题。您可以使用会话变量来跟踪每个用户的横幅生成使用情况。通过记录来自每个IP地址的活动来进行备份。拒绝大量使用用户和IP地址的过多请求。

我想象那里可能已经存在软件&用于管理IP资源使用的硬件工具,您可以在无需为应用程序自定义编码的情况下进行下载。我也会试着在ServerFault上提出这个问题。

+0

我喜欢使用会话的想法。如果他们超过了一定的限制,那么他们需要不时提供CAPTCHA。 – 2010-01-09 04:38:16

1

你可以check the referer以确保该请求您的即时代码从您的网站,而不是来自被盗链。

+0

我喜欢这种方法的简单性,但不幸的是引用者可能被欺骗。 :( – 2010-01-09 04:00:47

+0

我知道个人用户可以使用代理或浏览器插件来欺骗引用者,但第三方网站如何使用引用者欺骗来使热链接工作?我不是说这是不可能的,我真的好奇,因为我找不到任何东西在网上搜索,如果你担心恶意用户反复打到网址,你应该询问关于ServerFault上的DOS防护 – Annie 2010-01-09 04:31:53

+0

10我更担心人们会把链接在一个img标签上,并将它放在他们的页面上我可能会使用引用链接检查以及其他解决方案来获得最佳效果 – 2010-01-09 04:35:49

0

这种事情是相当多的,我们有<canvas>的原因之一。

使用<canvas>标签,您可以即时进行图像处理,而不会对服务器造成任何负担(实际上,服务器完全不了解此图像处理)。然后,完成后,您可以从画布上实际获取原始图像数据,并将其放入<img>标记中,或者将其提交给服务器,或者其他任何您可以对图像执行的操作。

如果你可以回退到你目前所拥有的(与其他的答案提出的意见一起)实现这一点,那么你会达到一个良好的平衡。