前几天,我的老板要求我找到一种方法来提高使用Datatables进行搜索/过滤/排序时PHP请求的性能(任何CRUD都会遇到相同的问题,但在我们的情况下,我们经常使用Datatables) 他试图说服我,PHP应该能够像Java一样将对象保留在内存中(他来自JSP),这样我们就可以根据需要操作对象,而不必每次都访问数据库。而且,我试图说服他根据请求生存和死亡,并且不存在PHP的对象永久性之类的东西,至少与Java或C#处理它的方式不同。
我们使用数据表使用我们创建的简单易用的自定义类,从Oracle数据库向用户列出记录,以查询数据库并在DT期望的对象中发送结果。然后他们可以根据需要过滤,搜索和排序数据集。当我们谈论要查询具有百万条记录的表时,每次对数据库进行排序或筛选时都会调用DB,这会降低性能。
无论如何,我最终还是告诉他我会四处看看,所以我四处看看网络,发现内存缓存,APC,APCu也在这里四处张望,找到的答案与我所需的内容相近,但不尽然。
Memcache基于服务器,APC基本上是OPCache,APCu看起来或多或少是我所需要的,但是随着很多请求,它变得支离破碎并且变慢了(或者有人说)。
我只需要一种将数据集保留一段时间的方法,以便用户可以按10片(或任意选择的记录,只要不是整个数据集)获取记录列表,因为客户端-不应只是为了娱乐而保存数百万条记录...)。我不希望Facebook,Amazon或Google的速度如此快,但我需要的是30秒以上的请求,只是为了过滤一次仅显示10条记录的数据集...
顺便说一句,在缓存方面,我是一个菜鸟。我已经使用PHP工作了很多年了,我知道很多,但是当涉及到缓存解决方案时,我不知道我在说什么...
我能得到的任何帮助将不胜感激。
编辑:不,不是This one的重复...问题本身听起来可能像另一个问题,但是问题绝对不一样。我需要一种简单而有效的方法来缓存这些内容,我的要求是广泛的。 通过基于文件的缓存,便有了管理这些文件的整个概念。用户只能加载一次列表,然后离开到另一个页面,他们可以使用不同的过滤器多次加载该列表,然后他们可以决定在该页面上挂一会儿,然后再次搜索。基于文件的可能不是这里的解决方案... 一个简单的“看到这个问题,他们有您想要的东西”就足够了。 在对StackOverflow社区表示敬意的同时,我觉得很棒,我觉得有些人很快就会触发,甚至在标记为重复项之前似乎都不想尝试阅读甚至理解描述,甚至没有任何有用的方法答案或解释(我不仅指我的问题,这是一个常见概念,在这个论坛上我会越来越多地看到它)