【发布时间】:2013-03-18 18:48:20
【问题描述】:
我正在使用 CakePHP 为云文件管理网站工作,用户可以在其中上传大量文件,如图像、文档、pdf 等以及所有上传的文件将在 aws s3 存储桶中,在本地没有任何内容。
这些文档将使用 jstree 加载。当用户单击 jstree 文件夹时,该文件夹的相应文档将通过 AJAX 加载到视图中。
现在的问题是,当有很多文件时,它会花费大量时间来加载文件夹的相应文件。例如:我有一个包含 50 多个图像的文件夹以及一些 doc 文件。当我选择该文件夹时,加载该文件夹需要几分钟的时间,而且每次都需要这么长的时间。
我已经为该 ajax 加载的视图使用了缓存,并且还在 jquery ajax 设置中将 cache : true 设置为该视图文件。
类似:
public $cacheAction = array(
'index' => 36000,
'ajax_documents' => 3600 // this is the view file that render documents
);
.....
public function ajax_documents() {
// Here is all query data that set to corresponding ajax_document.ctp file
// I also cached the query result for each folder request
}
而在 jQuery
$.ajax({
type: 'GET',
cache: true,
ifModified: true,
data : {},
url: '..ajax_documents',
......
});
但没有任何效果。渲染ajax_document.ctp 仍然需要大量时间。文件缓存工作正常,因为我看到了它们。
因此,在这种情况下,我需要您的帮助和建议,如何提高这种倾斜度以及在这种情况下最好的方法是什么?
注意:
主要问题是每次视图加载时从 s3 加载图像。所以我基本上需要那个图像缓存的解决方案。
请帮帮我。
【问题讨论】:
-
您是否尝试过缩小瓶颈的范围?检索文档列表有问题吗?加载文件?您问题中提供的代码未提供有关该部分的信息。
-
不幸的是,我对 Amazon s3 没有任何经验,但快速搜索了“s3 的缓存控制”; stackoverflow.com/questions/10435334/… 和这个labnol.org/internet/… 也许这些链接可以帮助你进一步?
标签: php cakephp caching amazon-s3 cakephp-2.1