3

Drupal6で書かれたサイトがあります。

Drupalのキャッシュメカニズムを使用してパフォーマンスを向上させたいのですが、オンにすると、サイトのすべてのページにセッションデータが表示されるため、問題が見つかりました。Drupalのキャッシングシステムは静的コンテンツページに対してのみ機能し、セッションデータは事実上どのページも静的ではないことを意味します。

これに対する2つの解決策を考え出しました。

  1. Ajaxを使用して非静的データをロードするようにセッションデータを表示するブロックを書き直して、メインのHTMLコンテンツが静的になるようにします。これの欠点は、かなりの作業を意味することと、Javascriptに対応していないユーザーや特殊なブラウザ(スクリーンリーダーなど)の機能が低下することです。

  2. セッションデータをiframeまたは同様のものに移動します。これは間違っているように聞こえ、私はそれをしたくありませんが、それは問題を解決すると思います。

  3. または、すべてのページに動的データの小さなブロックがあることに対処できる方法でサイトをキャッシュできる代替のキャッシュシステムを見つけます。これは私たちが好むオプションですが、何も見つけることができていないので、ここで質問します。

したがって、オプション3で役立つ提案があれば、お知らせください。ありがとうございました。

(ps-Drupal 7には、これに役立つ可能性のある改善されたキャッシングシステムがあることは知っていますが、まだD7に移行する準備ができていません)

[編集]これについてはあまり進歩していないので、私はそれを賞金に開放します。

Ubercartが同様の状況にどのように対処するかを調べました(これは最も人気のあるDrupalモジュールの1つであり、基本的に私たちと同じ問題を解決する必要があるためです)。ユーザーがログインしていないときにカート情報ブロックに静的テキストを表示させ(つまり、「バスケットを表示するにはここをクリック」)、ユーザーがログインしているときにすべてのページに動的カートデータのみを表示することで回避します。これが実際に問題を解決するとは思わないでください。それはそれを回避するだけであり、それは私たちが望んでいることではありません。しかし、Ubercartがこの方法でそれを行うことに頼った場合、それが唯一の選択肢であることが判明するかもしれないのではないかと心配しています。

4

5 に答える 5

3

Authenticated User Page Caching(Authcache)モジュールを見たことがありますか?上記のオプション1で説明したものと同様に機能します。

于 2010-12-22T18:45:10.457 に答える
2

Ajaxブロック。

Authcacheよりも簡単なソリューションはAjaxブロックです。

http://drupal.org/project/ajaxblocks

うまく機能し、私が覚えていることから、それはjsのないユーザーをかなりうまく処理します。

于 2011-01-07T01:27:08.000 に答える
1

別の解決策は、ESIゲートを使用して、ページをブロックのアセンブリとしてレンダリングすることです。これに関するいくつかのプロジェクトがあります、私は専門家ではありませんが、グーグルを検索することはあなたにいくつかのアイデアを与えることができます。

PS:D7でも同じ問題が発生します。キャッシュは、ほぼ同じです。

于 2011-01-07T18:35:06.133 に答える
0

このモジュールをチェックアウトすることをお勧めします:http://drupal.org/project/blockcache_alter。それがあなたが探しているものを達成するかどうかはわかりませんが、それはあなたにブロックキャッシングへの洞察を与えるのに役立つかもしれません。

また、ここには何か役立つものにつながる可能性のある優れたパフォーマンスリソースがたくさんあります:http://drupal.org/node/326504

于 2011-01-06T18:06:39.700 に答える
0

私の問題は非常に似ています。セッションの設定に応じて、ボディの背景が変わります。jQueryを使用してbodyタグにクラスを追加することはできますが、このパフォーマンスが正常に表示されるかどうかはわかりません。

テストして報告します。

于 2011-02-06T20:47:59.490 に答える