iis - 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 将请求视为唯一并降低内存消耗。
解决方案
我不确定 ColdFusion/IIS 中是否存在限制,但我认为浏览器具有故障安全功能以限制无限循环。在我的浏览器(Chrome)中,似乎限制为 19。
克服这个问题的方法是确保 HTML 加载,这样我们就不会混淆会话。然后使用以下任一方式进行重定向。
window.location
<meta http-equiv="refresh" content="0;url=http://example.com">
.
推荐阅读
- ruby-on-rails - 我们如何在 swagger rspecs 中传递标头
- turtle-graphics - 乌龟——乌龟的速度究竟是多少?X 动作/秒?
- python - mysql python sqlalchemy上的编码问题
- python - 无法将字符串转换为浮点数 - 文件名/标签问题
- algorithm - 在 matlab 中生成安全和随机的 AES 密钥
- flutter - 如何在颤动的页面变化上实现动画?使用 changenotifierprovider
- c# - 我怎样才能始终获得相同的列大小?(引导程序)
- deep-learning - 将 ResNet50 解码器代码转换为 ResNet18 解码器
- python - 烧瓶应用程序启动后运行代码:生产模式
- domain-driven-design - 在 DDD 中,评论是否包含在帖子聚合中?