使用Webpack构建ReactJS应用程序.最近有兴趣使用代码分割来减少应用程序的大小.
我已经尝试实现一个包装System.import()的自定义HOC:
/* async/index.tsx */
... at a very high level looked like...
class Async extends React ... {
componentWillMount() {
this.props.load.then(c => {
this.component = c;
this.setState({loaded:true});
}
}
render() {
return this.component ? <this.component.default {...this.props} /> : <span />;
}
}
/* async/foo/index.tsx */
import Async from 'async';
const Foo = (props) => (
<Async
{...props}
load={System.import('async/foo/body')}
/>);
class Foo ... {
...
render = () => <Foo myProp={'bar'} />;
}
Run Code Online (Sandbox Code Playgroud)
目前我正在尝试反应加载(https://github.com/thejameskyle/react-loadable),这个包基本上做同样的事情,但有一些额外的铃声和口哨声.
这两种方法在本地都可以正常工作,但在部署时不起作用.从2017年3月初开始,Webpack配置来自React-Starter-App.我的直觉告诉我webpack配置是问题的根源,但我不知道如何调试它.
/* …Run Code Online (Sandbox Code Playgroud) 科尔斯笔记版本:
index.php?map_id=foo加载到 www.not-my-domain.com 上的 iframe。索引集SESSION['map_id']= foo. Flash 文件尝试SESSION['map_id']通过 Authenticate.php获取,但 Authenticate.php 没有为任何 SESSION变量设置值。
-- 仅首次加载,跨域问题。
详细:
我在设置时有一个索引: SESSION['map_id'] = foo
索引文件然后加载一个闪存文件。初始化时,flash 访问一个“Authenticate.php”文件,该文件回显SESSION['map_id']并通过 加载到 flash 中LoadVars。Flash 然后显示适当的数据。
此步骤不能以其他方式完成
这一切在我们的主站点上都运行良好。当我们尝试通过提供 iframe 嵌入代码来移植到其他站点时,问题就出现了:
<iframe src="http://www.mydomain.com/?map_id=foo&code=bar" ... ></iframe>
Run Code Online (Sandbox Code Playgroud)
在从另一个站点 (www.anotherdomain.com) 重新加载嵌入代码时,SESSION变量似乎已被破坏,因为 flash 只是说它们是空的。($map_id输出空白)
索引文件仍会正确回显$map_id为“foo”,只是“Authenticate.php”文件似乎无法访问SESSION变量。
我已确保session_start()存在于所有适当的文件中。
我们的应用程序根据外部服务的网络钩子创建/更新数据库条目。Webhook 发送对象的外部 ID,以便我们可以获取更多数据进行处理。为了获取更多数据而进行往返的 Webhook 的处理时间为 400-1200 毫秒。
有时,同一对象 ID 的多个挂钩在彼此之间的微秒内发送。以下是最近发生的时间戳:
2020-11-21 12:42:45.812317+00:00
2020-11-21 20:03:36.881120+00:00 <-
2020-11-21 20:03:36.881119+00:00 <-
Run Code Online (Sandbox Code Playgroud)
大约在这个时间,还可能发送其他对象进行处理。问题在于,上面突出显示的两个挂钩的并发处理将为同一个对象创建两个新的数据库条目。
问:防止同时处理两个突出显示的条目的最佳方法是什么?
我的尝试: 目前,在传入挂钩开始时,我在存储对象 ID 的 Changes 表中创建一个数据库条目。在处理之前,会检查 Changes 表中是否有在过去 10 秒内为此 ID 创建的条目;如果找到一个进程,它就会退出,让另一个进程完成工作。
在上面的例子中,创建了两个数据库条目,因为它们的时间非常接近,所以它们同时到达检测点,找到对方,然后退出,导致什么也没做。
我想过在检查之前添加一些抖动超时(增加处理时间),或锁定表(再次增加处理时间),但这一切都感觉我正在打一场错误的仗。
有什么建议么?
我们的 API 是带有 Postgres 数据库的 Django 3.1
我在 AWS Cloudfront 后面有一个 API,多年来它在我们的前端应用程序中运行良好。最近,在功能发布后,我注意到一些用户报告数据未保存并且应用程序挂起。经过长时间的调查,我发现当 PUT 请求的 JSON 正文大于 8kb 时,我们的 Cloudfront 发行版将返回 403 Forbidden 错误。少一点就可以,多一点就返回 403。我通过发送正文数据大小不断减小的 PUT 请求来验证这一点,直到收到预期的 201 Created 响应,然后检查发送的正文的大小。JSON 格式正确。
错误在大约 170 毫秒内返回,并包含来自 Cloudfront 的标头X-Cache: Error from cloudfront
我已经寻找了大小限制的设置,我已经尝试禁用 WAF 规则,我已经尝试将“压缩对象”打开/关闭。启用实时日志会对接受的最大数据产生某种影响吗?看起来很疯狂,但我对这个问题有点困惑。
我很乐意向大家展示来自 Cloudwatch 的某种日志来提供帮助,但是未通过 Cloudfront 的请求不会记录在 Cloudwatch 中,而且我无法设置任何类型的日志记录来更好地了解原因它在呕吐。
concurrency ×1
cross-domain ×1
django ×1
iframe ×1
php ×1
postgresql ×1
python-3.x ×1
reactjs ×1
webpack ×1
webpack-2 ×1