我正在开发一个项目,该项目使用PHP创建一个' complex '对象,其中包含许多对其他对象的引用,这些对象链接回其父对象等...
然后, Zend AMF 模块将对象结构序列化并发送到flex应用程序。
问题是序列化需要花费大量时间(+ 10秒)。
我的问题是:任何人都可以向我提供有关序列化如何工作的提示以及我可以以何种方式优化对象结构以使序列化运行得更快?
答案 0 :(得分:1)
切换到JSON将有助于解决这个问题,因为它可以更轻松地进行缓存。
APC也将仅为操作码缓存部分提供帮助,而不是用于在内存中存储对象。
这个物体究竟有多大?难道不值得发送整件事吗?如果你只是处理记录集,你可以通过只下载用户可以看到或将在不久的将来看到的内容来修复它。
答案 1 :(得分:0)
默认的序列化程序将遍历每个属性,如果属性是一个对象,它将遍历每个对象及其属性,直到完成为止。
由于您的对象很复杂,因此需要进行大量的处理以及序列化的许多级别的对象。
作为优化点,您可能希望研究在对象上实现可序列化接口,并将序列化所需的最少量信息序列化并通过线路发送到Flex应用程序。
答案 2 :(得分:0)
在进行AMF序列化或任何序列化时,如果需要考虑性能,通常最好使用较小的数据。通过这样做,您可以将单个对象作为真正的ActionScript对象而不仅仅是数据占位符。在执行任何类型的RPC时,较小的数据通常更好。你可以使用JSON,但是你放弃了使用AMF获得的紧密数据绑定。因此,尝试使用多个HTTP请求处理较小的数据包。