0

我正在一个使用CakePHP进行云文件管理的站点工作,用户可以在其中上传大量文件,如图像、文档、pdf 等,所有这些上传的文件都将在 aws s3 存储桶中,在本地没有任何内容。

这些文档将使用 jstree 加载。当用户单击 jstree 文件夹时,该文件夹的相应文档将通过 AJAX 加载到视图中。

现在的问题是,当有很多文件时,它会花费大量时间来加载文件夹的相应文件。例如:我有一个包含 50 多个图像的文件夹以及一些 doc 文件。当我选择该文件夹时,加载该文件夹需要几分钟的时间,而且每次都需要花费这么多时间。

我已经为那个ajax加载的视图使用了缓存,并且还在cache : truejquery ajax设置中设置了那个视图文件。

就像是:

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 加载图像。所以我基本上需要那个图像缓存的解决方案。

请帮我解决一下这个。

4

1 回答 1

0

您可以尝试压缩文件系统上的文件,但老实说,您最好将图像托管在某种 CDN 服务上,其中它们有自己的缓存并使用它们的 url 来加载图像。

我从工作经验中知道这一点。我们使用蛋糕 1.3。即使使用有效的内存缓存,从蛋糕中缓存通常也很糟糕。使用 CDN。

于 2013-03-18T19:11:24.257 回答