0

私はCakePHPを使用したクラウドファイル管理のサイトで作業しています。このサイトでは、ユーザーは画像、ドキュメント、PDFなどの多数のファイルをアップロードでき、アップロードされたファイルはすべてaws s3バケットにあり、ローカルにはありません。

これらのドキュメントは、jstreeieを使用してロードされます。ユーザーがjstreeフォルダーをクリックすると、そのフォルダーの対応するドキュメントがAJAXを介してビューに読み込まれます。

問題は、ファイルが多数ある場合、フォルダの対応するファイルをロードするのに非常に長い時間がかかることです。例:50以上の画像といくつかのドキュメントファイルを含むフォルダーがあります。そのフォルダを選択すると、そのフォルダをロードするのに数分かかり、毎回その時間がかかります。

私はすでにそのajaxがロードされたビューにキャッシュを使用し、cache : truejqueryajaxセットアップでそのビューファイルに設定しました。

何かのようなもの:

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

ファイルシステム上のファイルを圧縮することもできますが、正直なところ、独自のキャッシュが発生し、その URL を使用して画像をロードする CDN サービスで画像をホストする方がよいでしょう。

私はこれを私の仕事の経験から知っています。ケーキ1.3を使用しています。効果的な memcache があっても、ケーキからのキャッシングは一般的にひどいものです。CDN を使用します。

于 2013-03-18T19:11:24.257 に答える