私は基本的に同じページをレンダリングする2つのURLを持っています。軽微な違いは、location.href
に基づいて、javascriptで簡単に実行できます。とにかく、ルートが同じcontroller#action
を指している場合でも、2番目のルートは前者のキャッシュされたページを使用していません。どうすればこれを達成できますか?レールの異なるURLに同じキャッシュページを使用するにはどうすればよいですか?
1
A
答えて
0
私はあなたの反対の私のウェブサイトで興味深い要件を持っています - 異なるテーマのために同じURLから別のページを返すことができます。だから、私は "匿名キャッシュ"と呼ばれるソリューションを考え出し、余分なパラメータを含む私自身のキャッシュキーを作成します。しかし、私はこの解決策があなたにいくつかの手がかりを与えることができると思う。私は、ページキャッシュのための標準的なキーを作るところ
module AnonymousCache
def self.included(base)
base.extend(ClassMethods)
end
module ClassMethods
def caches_page_for_anonymous(*pages)
before_filter :check_cache_for_anonymous, :only => pages
after_filter :cache_for_anonymous, :only => pages
end
end
def check_cache_for_anonymous
return unless perform_caching
return if logged_in?
path = anon_cache_path
if content = Rails.cache.read(path)
send_data(content,
:type => 'text/html;charset=utf-8', :disposition => 'inline')
return false
end
end
def cache_for_anonymous
return unless perform_caching
return if logged_in?
path = anon_cache_path
@expires_in ||= 1.hour
self.class.benchmark "Cached page for guest: #{path}" do
Rails.cache.write(path, response.body, :expires_in => @expires_in.to_i)
end
end
protected :check_cache_for_anonymous
protected :cache_for_anonymous
private
def anon_cache_path()
path1 = File.join(request.host, current_theme, request.path)
q = request.query_string
path1 = "#{path1}?#{q}" unless q.empty?
path1
end
end
anon_cache_path
方法があります。私にはcurrent_theme
が含まれているのが分かります。
これをコピーして、お客様の要件に応じてanon_cache_path
を変更することができます。
関連する問題
- 1. 同じページのセクションに異なるルートを使用するにはどうすればよいですか?
- 2. 同じアプリケーションで異なるバージョンのクラスを使用するにはどうすればよいですか?
- 3. 同じViewModelに異なるDisplayTemplatesを使用するにはどうすればよいですか?
- 4. 複数の異なるアイテムに同じデータトリガを適用するにはどうすればよいですか?
- 5. 異なるオペレーティングシステムでwinform GUIの外観を同じにするにはどうすればよいですか?
- 6. 同じページで同じJavaScript変数を使用するにはどうすればよいですか?
- 7. BLToolkitの同じアクセサで異なるコマンドタイムアウトを指定するにはどうすればよいですか?
- 8. ボタンを使用して同じウェブページの異なるセクションに移動するようにナビゲーションバーをコーディングするにはどうすればよいですか?
- 9. 同じフォームクラスの異なるインスタンスは、どのように異なるウィンドウクラススタイルを使用できますか?
- 10. 同じまたは異なるフォルダにhtmlページをリンクするにはどうすればいいですか?
- 11. かなりのURLを使用するURLを取得するにはどうすればよいですか?
- 12. 2つの異なるテーブルで同じフィールドを比較するにはどうすればいいですか?
- 13. すべてのページのアドレスバーに同じURLを保存するにはどうすればよいですか?
- 14. 異なる条件で同じASPグリッドビューを読み込むにはどうすればよいですか?
- 15. Railsで同じURLフォーマットの異なるコントローラにルーティングするにはどうしたらいいですか?
- 16. 同じテーブルの異なる列を結合するにはどうすればいいですか?
- 17. 複数のバリアントを同じURLにリダイレクトするにはどうすればよいですか?
- 18. Grailsプロジェクトの異なるサブドメインの同じセッションとセッションID - どのようにすればいいですか?
- 19. 同じマシンで異なるバージョンのレールを使用できますか?
- 20. 同じコンテンツを2回フローティングしないようにするにはどうすればよいですか?
- 21. 同じページのリフレッシュdivに.load()を使用するにはどうすればよいですか?
- 22. 同じHTMLフォームに2つのJavaScriptリファレンスを使用するにはどうすればよいですか?
- 23. MySQLで同じ列にLeft Joinを2回使用するにはどうすればよいですか?
- 24. 同じJSファイルでJSファイルのURLを取得するにはどうすればよいですか?
- 25. SharePoint上の複数のリストで同じフィールドタイプを使用するにはどうすればよいですか?
- 26. 異なるアプリケーションに同じロガーを使用するのは悪いですか
- 27. 同じビュー内からMVC WebGridのSelectedRowオブジェクトを使用するにはどうすればよいですか?
- 28. 1つのアプリケーションでjsTreeに異なる「search_method」を使用するにはどうすればよいですか?
- 29. Django ORMでは、filter()を使用して2つの異なるフィールドで同じフィールドをフィルタリングするにはどうすればよいですか?
- 30. 異なるモバイル画面に同じサイズで表示されるようにブロック要素をスケールするにはどうすればよいですか?