質問

私の制作サイトの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 会議。

ライセンス: CC-BY-SA帰属
所属していません drupal.stackexchange
scroll top