Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/ruby-on-rails/66.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何调整AJAX应用程序的性能_Javascript_Ruby On Rails_Performance_Caching_Memcached - Fatal编程技术网

Javascript 如何调整AJAX应用程序的性能

Javascript 如何调整AJAX应用程序的性能,javascript,ruby-on-rails,performance,caching,memcached,Javascript,Ruby On Rails,Performance,Caching,Memcached,我正在开发一种图像/个人资料搜索应用程序,它几乎完全基于AJAX。主页基本上显示个人资料图像,并允许用户对其进行过滤/搜索和分页 分页在用户滚动时起作用,因此界面必须非常快速。主页上只会显示6个(可能是9个,但肯定不会更多)图像,所以用户会滚动很多。我目前正在使用非常简单的JS缓存来存储所有请求的结果,以防用户决定返回。。。在这种情况下,我只是将所有内容从缓存中取出,而不是查询服务器 客户端缓存 我想到的一个选择是预先加载前面的10页,然后将它们存储在缓存中 但是我最大的问题是过滤/搜索,因为这

我正在开发一种图像/个人资料搜索应用程序,它几乎完全基于AJAX。主页基本上显示个人资料图像,并允许用户对其进行过滤/搜索和分页

分页在用户滚动时起作用,因此界面必须非常快速。主页上只会显示6个(可能是9个,但肯定不会更多)图像,所以用户会滚动很多。我目前正在使用非常简单的JS缓存来存储所有请求的结果,以防用户决定返回。。。在这种情况下,我只是将所有内容从缓存中取出,而不是查询服务器

客户端缓存 我想到的一个选择是预先加载前面的10页,然后将它们存储在缓存中

但是我最大的问题是过滤/搜索,因为这完全改变了进入服务器的查询类型。我的过滤器不是很复杂,只有大约6-7个字符串/数字/枚举属性

现在,如果我想在缓存中进行所有过滤,我必须复制所有搜索逻辑并从服务器获取所有数据(不仅仅是我显示的数据),以便在客户端过滤结果

这里提出了一个问题,我应该让缓存以某种方式持久化吗?也许可以把它放进饼干里

服务器缓存? 一个建议可能是在服务器上使用memcached,然后将所有内容都存储在那里。我肯定会缓存掉所有可以缓存的结果,但这并不能避免服务器处理大量AJAX请求

我正在Rails 3上开发这个应用程序,尽管我喜欢它,但我不会说它是世界上最快的东西这给我的另一个选择是创建单独的Rack/Sinatra应用程序,仅处理AJAX请求。我指的是来自主查询的请求,而不是所有AJAX请求

S3用于图像? 这个应用程序的很大一部分是图像,尽管它们大多是小的缩略图(除非用户想把它显示得更大)

目前,我没有带宽方面的问题。我的VPS主机为我提供200GB,这应该足够了(我希望如此)。问题在于加载速度。如果我将所有图像上传到S3并从S3加载它们,会有帮助吗?或者只对较大的文件这样做值得吗?我将加载大量100x150px的图像,它们通常小于50kB。

您看过了吗。它有一个有趣的想法,即只在用户向下滚动时构建列表,然后在用户向外滚动时删除列表