問題タブ [cache-invalidation]

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.

0 投票する
2 に答える
887 参照

javascript - ポリモーフィックなインライン キャッシュは可変型でどのように機能しますか?

ポリモーフィック インライン キャッシュ (PIC) は、高価なルックアップ手順 (通常はハッシュテーブル ルックアップ) を回避するために、オブジェクトの型によって実際のメソッドをキャッシュすることによって機能します。

型オブジェクトが変更可能な場合 (つまり、メソッドが実行時に別のものにパッチされたサルである可能性がある場合)、型比較をどのように処理しますか?

私が思いついたアイデアの 1 つは、メソッドが調整されるたびにインクリメントされる「クラス カウンター」です。それらのメソッドが変更されていなくても、そのクラス。

この問題は JavaScript に直接当てはまり、大きな JavaScript 仮想マシンの 3 つすべてに PIC があることがわかっているため、これには適切な解決策があるに違いないと確信しています。

0 投票する
1 に答える
370 参照

c - ベンチマーク時にキャッシュを無効にする方法は?

UsingAs と UsingCast の順序を入れ替えると、そのパフォーマンスも入れ替えられるというこのコードがあります。

出力:

これを行うと...

...結果は次のとおりです。

これだけやると…

...結果は次のとおりです。

これだけを行う場合:

...結果は次のとおりです。

それらを個別に実行する以外に、キャッシュを無効にして、ベンチマークされている2番目のコードが最初のコードのキャッシュされたメモリを受信しないようにする方法は?

ベンチマークはさておき、最新のプロセッサがこのキャッシング マジックを行うという事実が気に入りました :-)

[編集]

このより高速なコードを試すようにアドバイスされているように(おそらく)...

...結果は次のとおりです。

上記の 2 つのコードより遅い

[編集]:

各ルーチンに独自のコピーを渡すことをお勧めします...

...出力:

今では同じ結果になりました、Remus に感謝します!

Cast と As を個別に実行しても、同じ結果 (つまり 282) が得られます。さて、配列の独自のコピーを渡されたときになぜ速くなったのか (322 ミリ秒から 282 ミリ秒まで) については、私はそれから何も理解できません :-) それはまったく別の話です

0 投票する
1 に答える
1346 参照

django - Django の save() で Memcached キーを無効にする

比較的静的なデータセットに依存するトラフィックの多いビューのデータをキャッシュするために memcached を使用する Django のビューがあります。キーワードは相対的です。データベースで変更されたときに、その特定の URL のデータの memcached キーを無効にする必要があります。できるだけ明確にするために、ビューのミート アンド ポテトを次に示します (Person はモデル、キャッシュは django.core.cache.cache です)。

私がやりたいのは、その cache_key 変数を「フォーマットされていない」形式で取得することですが、これを行う方法がわかりません-それができるかどうか。

これを行う何かが既にある場合に備えて、ここで私がやりたいことを示します (これは Person モデルの架空の save メソッドからのものです)。

私はこの種のもののビュークラスを作成し、その中に機能を持たせることを考えremove_cachegenerate_cacheます. それはより良い考えでしょうか?もしそうなら、それらがクラスにある場合、URLconf のビューをどのように呼び出すでしょうか?

0 投票する
3 に答える
1393 参照

php - Smarty キャッシュ ファイルの無効化

Smarty キャッシングについてもう少し詳しく知りたいので、いくつか簡単な質問があります...

  1. キャッシュの無効化を操作するには、Smarty がキャッシュを保存しているディレクトリを知りたいです。たとえば、関連するすべてのキャッシュされたページuser_id=123を に保存しcache/users/123/ます。cachesmarty caching dir はどこにありますか。user_id=123at に関連するキャッシュを保存するように smarty に指示するにはどうすればよいcache/users/123/ですか? Smarty はサブテンプレートのキャッシュもこのディレクトリに保存しますか?

  2. このディレクトリのキャッシュの消去に関する推奨事項はありますか? 一部の訪問者が現在このページにアクセスしている場合、このディレクトリからファイルを削除するだけでエラーが発生する可能性があると思います (エラーは、テンプレート キャッシュが見つかったことを smarty が確認しても、サブテンプレート キャッシュが既に削除されているために見つからない場合に発生する可能性があります。例えば)。

推奨事項やアドバイスをいただければ幸いです。

ありがとうございました。

0 投票する
1 に答える
76 参照

performance - 新しい投稿が追加されたときに、キャッシュされたカテゴリ ページ (page1、page2 など) を無効にしますか?

カテゴリ のブログがあるとしますA。カテゴリAには現在、100 ページで 1000 件の投稿があります。すべてのページはファイルにキャッシュされます (たとえば、Smarty テンプレート エンジンによってキャッシュされます)。投稿を追加していて、すぐに最初のページに表示したい。そのため、カテゴリ A の 100 ページすべてのキャッシュをクリアまたは無効にする必要があります。

ファイルが多すぎる (たとえば、数千ページ) 可能性があるため、キャッシュされたページを削除することはお勧めできません。リクエストに応じてキャッシュを無効にしてページを再生成する方がはるかに効率的な方法だと思います。

私の唯一の考えは、number of posts in categoryキャッシュIDに追加することです。したがって、最初にカテゴリ内の投稿数を取得し (たとえば、memcache から)、この数によってキャッシュされたバージョンが有効かどうかを確認する必要があります。

すべてがうまくシンプルに見えます。しかし、新しい投稿を追加し、1 分後に別の (古い) 投稿を削除する状況を想像してみましょう。投稿数は 1000 のままで、一部のカテゴリ ページは古いままになります (この 1 分間に閲覧されなかった場合)。

解決策は何ですか?

PS: 私の英語で申し訳ありませんが、私の質問は、すでにそのような問題に直面している人々から明確になると思います.

ありがとうございました

0 投票する
1 に答える
984 参照

c++ - C++ `.reserve()` を使用して `std::vector` をパディングし、マルチスレッド キャッシュの無効化と偽共有から保護する方法

以下に示す一般的な構造のプログラムがあります。基本的に、私はオブジェクトのベクトルを持っています。各オブジェクトにはメンバー ベクトルがあり、そのうちの 1 つは、より多くのベクトルを含む構造体のベクトルです。マルチスレッド化により、オブジェクトは並行して操作され、メンバー ベクター要素へのアクセスと変更を多く含む計算が実行されます。1 つのオブジェクトは、一度に 1 つのスレッドによってのみアクセスされ、処理のためにそのスレッドのスタックにコピーされます。

問題は、プログラムが 16 コアまでスケールアップできないことです。この問題は、誤った共有および/またはキャッシュの無効化である可能性があると思われ、アドバイスを受けています。これが本当なら、原因は互いに近すぎるメモリを割り当てるベクトルにあると思われます.両方の問題は(簡単に言えば)異なるプロセッサによって同時にアクセスされる近接メモリアドレスによって引き起こされると私は理解しているからです. この推論は理にかなっていますか、これが起こる可能性はありますか? もしそうなら、.reserve() を使用してメンバー ベクトルをパディングして余分な容量を追加し、ベクトル配列間に空のメモリの大きなスペースを残すことで、この問題を解決できるようです。それで、これはすべて意味がありますか?私は完全にここで昼食をとっていますか?

0 投票する
3 に答える
3058 参照

jekyll - Jekyll Bootstrap ベースのブログ - 期限切れヘッダー?

Github ページでホストされている Jekyll ブートストラップ ベースのブログがあります。

私の問題: Web ページで何かを変更するたびに、強制的にページをリロード (CTRL + R) して変更を確認する必要があります。

Jekyll または私のブラウザは、送信できる新しいバージョンがあることを認識していないようです。

これをより適切に処理するように Jekyll を構成するにはどうすればよいですか?

0 投票する
2 に答える
3139 参照

caching - ユーザーのCanCan能力を表す文字列を取得します

ビューをキャッシュしたいのですPostが、ビューは現在のユーザーの権限によって異なります(たとえば、「編集」リンクのみを表示する場合current_user.can?(:edit, @post)

そのため、キャッシュキーに現在のユーザーのCanCan能力の表現を含めて、ユーザーの能力が変更されたときにキャッシュを無効にできるようにします。

SO:同じ能力を持つ2人の異なるユーザーが同じ「能力文字列」を生成するように、現在のユーザーの能力を表す文字列を取得するにはどうすればよいですか?

私は試しましuser.ability.inspectたが、これは同じ能力を持つ異なるユーザーに対して同じ文字列を生成しません

0 投票する
1 に答える
2842 参照

caching - Doctrine 2 結果キャッシュの無効化

ユーザー(メッセージングアプリ)の新しいメッセージの数を取得するクエリで Doctrine 2 の結果キャッシュを使用しています。

このキャッシュを次のように無効にしようとしました (エンティティ リポジトリ内):

ウェブサイトの各ページで無駄なクエリを作成する必要がないように。

私の質問:それは推奨される方法ですか? 最終的に問題が発生しますか?