我正在使用 CakePHP 来建立云文件管理网站,用户可以上传大量文件,如图片,文档,pdf等,以及所有上传的文件将在aws s3桶中,在本地没什么。
这些文件将使用jstree加载ie。当用户点击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加载图像。所以我基本上需要该图像缓存的解决方案。
请帮助我。
答案 0 :(得分:0)
你可以尝试压缩文件系统上的文件,但说实话,你最好将你的图像托管在某种类型的CDN服务上,在这种服务中他们有自己的缓存发生并使用他们的网址来加载你的图像
我从工作经验中了解到这一点。我们用蛋糕1.3。即使有效的memcache,从蛋糕缓存也很糟糕。使用CDN。