【问题标题】:On-The-Fly Image Generation in PHPPHP 中的动态图像生成
【发布时间】:2011-01-03 03:34:40
【问题描述】:

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

【问题讨论】:

    标签: php javascript image-processing


    【解决方案1】:

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

    【讨论】:

    • 我也喜欢基于每个图像限制刷新的想法。我可以将所有配置选项散列在一起,但它们在数据库中带有时间戳,然后比较这些图像的未来使用情况。可能这里所有三个答案的组合会提供最好的结果。
    【解决方案2】:

    全面的日志记录和会话跟踪将有助于解决问题。您可以使用会话变量来跟踪每个用户对横幅生成的使用情况。通过记录来自每个 IP 地址的活动来支持这一点。拒绝来自重度使用用户和 IP 地址的过多请求。

    我想可能已经存在用于管理 IP 资源使用的软件和硬件工具,您可以直接使用这些工具,而无需为您的应用程序进行自定义编码。我也会尝试在ServerFault 上问这个问题。

    【讨论】:

    • 我喜欢使用会话的想法。如果他们超过了一定的限制,那么他们需要不时提供验证码。
    【解决方案3】:

    您可以check the referer 确保对您的动态代码的请求来自您的站点并且没有被热链接。

    【讨论】:

    • 我喜欢这种方法的简单性,但不幸的是,引荐来源网址可能会被欺骗。 :(
    • 我知道个人用户可以使用代理或浏览器插件来欺骗引荐来源网址,但是第三方网站如何使用引荐来源网址欺骗来使热链接起作用?我并不是说这是不可能的,我真的很好奇,因为我在网上找不到任何东西。如果您担心恶意用户一遍又一遍地点击 url,您可能应该询问有关 ServerFault 上的 DOS 预防。
    • 我更担心人们会把链接放在一个 img 标签中,然后把它贴在他们的页面上。我可能会使用推荐人检查以及其他解决方案以获得最佳效果。
    • 是的,我不明白引荐来源网址检查如何不足以阻止他们自己在 img 标签中打错链接。我错过了什么?
    • 嗯,它可能不只是贴在 img 标签中,它可以通过 JavaScript 调用。这更像是一个例子。我根本不能冒这个东西被意外或故意滥用的风险。但我肯定会使用推荐检查器,因为这可能适用于大多数情况。 +1
    【解决方案4】:

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

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

    如果您可以通过回退到您当前拥有的内容(以及其他答案提出的建议)来实现这一点,那么您将达到一个很好的平衡。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-11-24
      • 1970-01-01
      • 2013-01-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-11
      • 1970-01-01
      相关资源
      最近更新 更多