2012-04-19 7 views
1

は、私は私のウェブサイトのためのブログエンジンとしてtotoを使用して...ラックリフレッシュページ/クリアキャッシュ(config.ru内のすべての)

を、タイトルを変更してください。だから、Rack、Herokuを使い、すべての設定をファイルconfig.ruにうまく入れることができます。なぜなら、それはすべてが簡単なものになるからです。

モバイルデバイスを検出して別のサイトにリダイレクトするために、Rackプラグイン:mobile detectを使用します。

これが問題の原因です。私はリダイレクトリクエストをテストしましたが、リダイレクトは、ページを更新した後にのみ動作します。つまり、iPhoneで自分のWebサイトのURLを入力すると、最初に試してみてくださいモバイルの場合、リフレッシュ後、リダイレクトされます。

私はそれがサーバー上のキャッシュのためだと思います。(私の電話ですべてのキャッシュをクリアしても、それは起こりますから)。これは私の質問につながります:どのようなラック機能/プラグインは自動的にサーバー上のキャッシュをクリアするか、モバイルが検出されたときにブラウザを更新するよう強制します。

私はこの解決策を何度も探そうとしており、そのほとんどは本当に私のためではないRailsアプリケーション向けです。 config.ruですべてを動作させるにはどうすればよいですか?

答えて

1

それほど単純ではないかもしれません。トートはすべてのページを強制的にキャッシュし、ヘロクはワニスを実行します。これは、最初のリクエストがアプリにヒットする可能性は低いことを意味します。

ブラウザでリフレッシュすると、リクエストにおそらくno-cacheなどが含まれているため、ワニスがアプリを起動し、モバイルがを検出し、リダイレクトを返します。

キャッシュを設定しますトトのコードはここにある:
https://github.com/cloudhead/toto/blob/master/lib/toto.rb#L345

あなたは開発モードでアプリケーションを実行する場合、キャッシュは使用されないことを確認することができます。キャッシュが実際にどこにあるのかを確認する簡単なテストでなければなりません。

https://devcenter.heroku.com/articles/config-vars#production_and_development_modes

それが動作する場合、あなたは簡単な解決策、ではないが、最も効率的なものを持っています。

いずれにしても、私はあなたがページをキャッシュすると同時にダイナミックリダイレクトを提供するとは思わない。モバイル検出が機能するためには、ページをキャッシュしないでおく必要があります。

+0

ありがとうございます。それは多くをクリアする。また、コードの行に私を指摘してくれてありがとう。私はこのプラグイン(ラックキャッシュパージ)(https://github.com/svenfuchs/rack-cache-purge)を見つけたが、正確にはそれが何をしているのかわからないが、名前に基づいて、私はできるだろう私は最初の要求をヒットキャッシュをパージするには?またはもう一度問題は、私のアプリにヒットしない最初の要求ですか? – BPm

+0

@BPm私はあなたが望むことをするとは思わない。それにはドキュメントはなく、コードには「TODO」セクションがいくつかあります。それはおそらく終了コードではないということです。私はトトの著者に電子メールを送り、彼をこのページに紹介し、問題を回避するための良いアイデアがあるかどうか尋ねます。その間、開発モードでアプリケーションを実行してください(「開発」にRACK_ENVを設定する方法は、Herokuのドキュメントを参照してください)。別の簡単な解決策は、TotoをGithubにフォークし、コードを修正してキャッシュを設定する行を削除することです。 – Casper

+0

確認していただきありがとうございます:) – BPm

関連する問題