問題タブ [page-caching]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
ruby-on-rails - Rails 3.2 は、ディスクにキャッシュしたページをいつ使用しますか?
Rails 3.1 / 3.2 では、Rails 3.1 / 3.2 では同じようには機能しません。Rails はページをディスクに書き込みますが、それらを使用しないように見えます (そのため、メモリにページをキャッシュしていると思います)。
(私の長い説明をご容赦ください。複雑ではありません...)
新しい Rails 3.2.2 アプリには、次のものがあります。
サーバーを本番環境で起動して localhost にアクセスすると、次のように表示されます。
ファイル public/index.html がディスクに表示されます。
Firefox を使用しています。ctrl+r または shift+ctrl+r を押すと、次のように表示されます。
public/index.html ファイルを直接編集して ctrl+r または ctrl+shift+r を押しても、ファイルに加えた変更が表示されません。
Rails コンソールを開いて入力すると、次のようRails.cache.clear
に表示されます。
ctrl+r または ctrl+shift+r を押すと、次のように表示されます。
また、public/index.html への変更は上書きされます。
そのため、 public/index.html は使用されていないようです。
tmp/cache (上記のコンソール出力) で見つかった html ファイルを編集してから ctrl+r または ctrl+shift+r を編集しても、tmp/cache ファイルに直接行った変更は表示されません。
私が設定した場合config.cache_store = :file_store, Rails.public_path + "/cache"
、動作は同じようです。
Getting Started Rails Guide には、「Rails は、コントローラから生成した動的コンテンツよりも優先して public ディレクトリ内の静的ファイルを配信します」と書かれていますが、明らかにそうではありません。
ページはメモリにのみキャッシュされ、ディスク上のファイルは使用されていないようです...ここで何が起こっているのか、ディスクにページをキャッシュする方法を誰かが説明できますか? すべてのページをメモリにキャッシュするのは現実的ではありません。ありがとう!
linux - iノードに複数のaddress_space構造体を指定するにはどうすればよいですか?
2つの異なるプロセスがそれぞれ2つの異なるファイルを開くとします。通常、それらにはそれぞれ独自のiノードがあり、各iノードには独自のiノードがありますstruct address_space
(これは、ページキャッシュページがメモリ内のどこにあるかを覚えている人です)。
しかし、これらのファイルが最初は同一であることがわかっていたとしましょう。可能な限りスマートシェアキャッシングを行う方法を考え出したいです。
私はこれらの戦略を検討していました:
構造体に新しいフィールドを追加し
struct address_space
ます:「親」へのポインタ。次に、既存のページを探すときはいつでも、親(存在する場合)も調べます。したがって、ページに書き込むときはいつでも、ページをフォールトしてメインのaddress_spaceにCOWする必要があります。両方のファイルが共通の親を共有します。struct address_space
の関連する各セットをリンクリストにグループ化します。既存のページを探すときはいつでも、リンクリスト全体を検索してください。ただし、このシナリオでは、友人のaddress_spaceでダーティページを「見つける」ことは許可されません。つまり、ページが汚れると、バックアップとして使用できなくなります。このシナリオでは、誰かがファイルにデータを書き込んだ場合、address_spacesの関連付けを解除する必要があります。これを維持するためにも、ある種のCOWの振る舞いが必要です。
誰か教えてもらえますか:
- これらのアイデアのどちらかまたは両方が正しいですか?
- 特に気をつけるべきことは何ですか?
参考までに、私のシステムでは複数の同一ファイルが開かれているため、カスタムカーネルハックを実行してメモリを節約しています(ただし、同じiノード=ページキャッシュを共有していません)。
編集:3番目のアイデア:
- 「関連する」ページキャッシュのリンクリストを保持し、
address_space
ディスクから読み取るたびに、address_space
開いているすべての構造体を更新します。新しい関連ファイルを開くと、ダーティページをスキップする場合を除いて、大きなページテーブルのコピーが発生する必要があります。
codeigniter-2 - Codeigniter Web ページ キャッシングとデータベース キャッシングの両方?
私はまだ Codeigniter フレームワークに慣れていません。今日、データベース キャッシングhttp://codeigniter.com/user_guide/database/caching.htmlと Web ページ キャッシングhttp://codeigniter.com/user_guide/general/caching.htmlについて読みました。
ページビューが既にキャッシュされている場合、データベースのキャッシュが大きな意味を持つかどうか、少し混乱しています。そのため、ページがキャッシュにある場合でも、データベースには移動しません。
次のシナリオで見られる唯一のポイント: db から 30 の結果をロードする場合、php を使用して結果をシャッフルし、配列 10 の結果からプルします。次回ページキャッシュが削除されたとき、db からの 30 件の結果がまだキャッシュに残っていますが、今回はそれらの 30 件の結果をシャッフルした後に異なる結果が得られます。
ページ キャッシュも使用する場合にデータベース キャッシュを使用すると何らかの利点が得られる場合、他にシナリオはありますか?
asp.net-mvc-3 - StackOverflow の Ask Form メカニズム?
私たちは皆、
質問を投稿する前に、StackOverflow で質問を書いている最中です。ブラウザーを閉じるか更新しても、フォームに入力したすべてのコンテンツがまだ利用可能であることがわかります。
どのようにプログラムされていますか。
私は自分のアプリケーションで同様のことをしたいと思っています。
2つのセッション変数を保存することを考えることができます
- タイトル - 質問
- 本文 - メッセージ
最小時間間隔でセッション変数を更新し、[質問を投稿] ボタンをクリックして変数を強制終了します
これが StackOverflow がこれを処理する方法である場合、私は肯定的ではありません。
誰でも最善のアプローチを提案できますか?
私のプラットフォームは ASP.Net C# MVC 3.0 です
ruby-on-rails - Rails ページのキャッシュの有効期限切れ_in
任意の Rails コントローラーでは、以下の行は機能しますか?
memcached を使用していますが、ページ キャッシュのしくみに戸惑っています。ファイルシステムを使用しますか、それとも memcached を使用してページをメモリに配置しますか?
編集:ファイルシステムを使用するようです。一定時間後にキャッシュからページを自動的に解放する簡単な方法はありますか、それともスイーパーを作成する必要がありますか?
ruby-on-rails - ページキャッシングを使用しない場合は?
Railsのドキュメントからの抜粋:
ページキャッシュの問題の1つは、何らかの方法でアクセスを制限する必要があるページには使用できないことです。[...]
「アクセス制限」とは正確にはどういう意味ですか?例を挙げていただけますか?
たとえば、Wikiやフォーラムを指しますか?
ruby-on-rails - ActionController キャッシングが開発およびテスト環境で機能しない
私はこのコントローラーを持っています:
action_controller.perform_caching
環境内のそれぞれに対して有効になっています。
本番環境では、キャッシュされたページが public/cache/index.html に保存されているため、すべてが期待どおりに機能しますが、開発およびテストでは、リクエストごとにキャッシュされたバージョンの index.html が再生成されます。
Rails 3.1.8を使用しています
postgresql - Linux ページ キャッシュの置き換え
同じマシン上に、data-1 と data-2 という名前の 2 つの PostgreSQL データベースがあります。両方のデータベースは 40 GB のデータを保持し、マシンで使用可能なメモリの合計は 68 GB です。
data-1 と data-2 を開始し、いくつかのクエリを実行してすべてのデータを調べました。次に、data-1 をシャットダウンし、data-2 に対してクエリを発行し続けました。何らかの理由で、OS は依然としてデータ 1 のページの大部分をページ キャッシュに保持し、データ 2 のファイル用に約 35 GB の RAM を予約しています。その結果、data-2 に対するクエリがディスクにヒットし続けます。
fincoreでページキャッシュの使用状況を確認しています。data-2 に対してテーブル スキャン クエリを実行すると、data-2 のページが削除され、ラウンド ロビン方式でキャッシュに戻されることがわかります。data-1 のページは何日も触れられていませんが、何も起こりません。
data-1 のページがページ キャッシュから削除されない理由を知っている人はいますか? 問題に関連していると思われるあらゆる種類の提案を歓迎します。
これは Amazon の EC2 m2.4xlarge インスタンスで、68 GB の RAM とスワップ スペースはありません。カーネルのバージョンは次のとおりです。
編集-1:
NUMA 構成がないようです。
編集-2:
Linux カーネル ソース ツリーでpage-typesツールを使用して、ページ キャッシュの状態を監視しました。この結果から、次のように結論付けています。
ruby-on-rails - BRCOBRANCAを使用したActionController::Base:Classの未定義のメソッド `page_cache_extension'
UbuntuでRuby1.8.7を使用してRails3.2.1を実行しています。コンソールで「railss」を実行すると、次のメッセージが表示されます。ActionController :: Base:Classの未定義のメソッド `page_cache_extension'
私はこれらの行にコメントしようとしました:
config.action_view.debug_rjs = true
config.action_controller.perform_caching = false
しかし、私のために働いてはいけません。
私が実行しようとしているプロジェクトはこれです-> https://github.com/kivanio/brcobranca_exemploは、PDF形式でブラジルのドケットを生成するために使用されます。
誰かがこの問題で私を助けるためのアイデアを持っていますか?
ありがたい。