首页 > 解决方案 > ColdFusion / IIS / 重定向限制?

问题描述

我有一个 ColdFusion 脚本,它执行一项任务,然后使用<cflocation>标签重定向到自身,传入下一个要处理的 ID。该脚本在正好 51 行后停止工作。我认为这是代码中的错误,所以我将要处理的 ID 更新为 52,它从 ID 52 运行到 102 并停止。同样,正好是 51 行。

cflocation有谁知道标签上的 ColdFusion 是否有一些限制?或者这可能是 IIS 正在做的事情吗?

当我使用 JavaScriptwindow.location方法时,它可以正常工作并且直到最后都不会停止 - 正如预期的那样。

更新 - 说明

处理每个 ID 后脚本重定向到自身的原因是因为 ColdFusion 在请求完成之前不会将变量/内存释放回 JVM。因此,对于执行数百个复杂任务的请求,内存使用量会持续增长,直到请求正式完成。这会导致 JVM 中出现 ERROR OUT OF MEMORY。据我了解,纠正此问题的最佳方法是将项目拆分为单独的请求,这样 ColdFusion 会将请求变量/内存释放回 JVM。因此,为什么我们要处理 1 个项目,然后重定向到自我传递下一个要处理的 ID。这是为了让 ColdFusion 将请求视为唯一并降低内存消耗。

标签: iiscoldfusioniis-8coldfusion-10

解决方案


我不确定 ColdFusion/IIS 中是否存在限制,但我认为浏览器具有故障安全功能以限制无限循环。在我的浏览器(Chrome)中,似乎限制为 19。

克服这个问题的方法是确保 HTML 加载,这样我们就不会混淆会话。然后使用以下任一方式进行重定向。

  1. window.location
  2. <meta http-equiv="refresh" content="0;url=http://example.com">.

推荐阅读