2

必要に応じてタイトルを変更してください...

私は自分のウェブサイトのブログエンジンとしてtotoを使用しています。そのため、Rack、Herokuを使用し、すべての設定をファイルに適切に配置できますconfig.ru。これにより、すべてがシンプルになるため、気に入っています。

私はRackプラグインを使用しています。モバイル検出を使用してモバイルデバイスを検出し、別のサイトにリダイレクトします。

そして、それが問題の原因です。リダイレクトリクエストをテストしました。デプロイ後しばらくの間、リダイレクトはページを更新した後にのみ機能します。つまり、iPhoneで自分のウェブサイトのURLを入力すると、最初に元のサイトではなく元のサイトが表示されます。モバイルの場合、更新を押すとリダイレクトされます。

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

私はこのソリューションを何度もグーグルで検索しましたが、そのほとんどはRailsアプリ用であり、実際には私には適していません。どうすればそれをすべて機能させることができconfig.ruますか?

4

1 に答える 1

1

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

ただし、ブラウザで更新を押すと、リクエストに含まれるno-cacheものなどが含まれている可能性があります。これにより、Varnishがアプリにヒットし、モバイル検出がトリガーされ、リダイレクトが返されます。

キャッシュを設定するTotoのコードは次のとおりです:
https ://github.com/cloudhead/toto/blob/master/lib/toto.rb#L345

アプリを開発モードで実行すると、キャッシュが使用されないことがわかります。これは、キャッシングが実際に問題のある場所であるかどうかを確認するための簡単なテストである必要があります。

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

それがうまくいけば、最も効率的な解決策ではありませんが、簡単な解決策があります。

いずれにせよ、ページをキャッシュすると同時に動的リダイレクトを提供することはできないと思います。したがって、モバイル検出が機能するためには、ページをキャッシュしないままにする必要があります。

于 2012-04-19T08:34:25.780 に答える