Drupalキャッシングは、Cookieの読み取りを防ぎます
-
16-10-2019 - |
質問
私の制作サイトの1つで、JQuery StyleSheetスイッチャーを書きました。選択が行われたときにクッキーをドロップし、PHPを使用して、スタイルをオーバーライドするPageloadで対応するスタイルシートを選択します。パフォーマンスキャッシングモードを有効にするまで、すべてが素晴らしいです。明らかにこれは望ましい効果ではなく、なぜこれが起こっているのかを見ることができます。ページがキャッシュされており、「動的に」変化するスタイルシートと見なされるものをロードすることに関して、もはや本当に動的ではないことです。ただし、StyleSheetを変更すると、ページに戻ると、初期スタイルが適用されます。参照のためだけに、PHPを各ページテンプレート(page-front.tpl.phpおよびpage.tpl.php)にコーディングし、JavaScriptは私のscripts.jsにあります。 PHPは基本的に、他の声明のほんの数枚です。
大量のトラフィックがあるため、サイトでのキャッシュを有効にする必要がありますが、理想的にはこのスタイルスイッチャー機能を保持したいと考えています。このためのキャッシュルールの例外を作成する方法はありますか、それともスイッチャーを無効にする必要がありますか?モジュールに梱包するのに役立ちますか?
前もって感謝します :)
解決
同じページの2つのバージョンを作成したいので、キャッシュでこれを行うのに苦労していると思います。
私はこれを試したことはありませんが、あなたのstyle.cssを実際のCSSファイルではなく、Cookieに基づいてスタイルを返すDrupalコールバックにすることは可能です。 IEのスタイルを行うように、「スタイルシート」を含める必要があります。これをキャッシュすることはできませんが、実際にパフォーマンスが必要な場合は、PHPファイルでそれを行い、Drupal Bootstrapをスキップできます。
別のオプションは、JS自体がCookieに基づいてスタイルを実行できるようにすることです。
これらのオプションはどれも理想的ではありませんが、機能するはずです。
他のヒント
ページの1つのバージョンのみを作成することは可能でしょうか?すべてのページにすべてのスタイルを含めます(おそらく理想的ではありませんが、それらが巨大でない限り世界の終わりではありません)。その後、JavaScriptを使用して、たとえば、Cookieの価値に応じてボディクラスを追加しますか?
あるいは、Googletorpが.CSSファイルではなくコールバックであるというアイデアが好きです。
Cookieを使用して、memcacheを使用してcache_pageバリアントを選択します。 http://drupal.org/node/942914. 。これをGEOIPターゲティングに使用します。
ユーザーがモバイルデバイス上にある場合は、クッキーを使用してモバイルテーマを選択します。 http://drupal.org/node/361832#comment-4110568. 。これを使用しないでください、地元の1つで助けを与えました seadug 会議。