Apacheサーバー上でSalesforceデータベースからPHPを使用してAPIを使用して取得した情報を表示するダッシュボードを実行するページをキャッシュしようとしています。ワニス付き動的ページをキャッシュする
ダイナミック以下である、
clients->はApache/PHP/sqlqueries-> Salesforceの
ダッシュボードは、Salesforceを照会オブジェクトを含むPHPページをリロードするテーブルで構成されています。そのために
function refreshtable1() {
$('#table1').load('/tables/table1.php', function() {
setTimeout(refreshtable1, 60000);
});
}
に問い合わせる起こり、table1.phpは、クエリオブジェクトとすべてのリロードやクエリにSalesforceへのログインにSalesforceのAPIプラグインを含んでいます。
ログインは、セッションに入れられ、期限が切れるまで再利用されるセッションIDを返します。
ここでは、30人のユーザー、それぞれ30個の列を持つ5つのテーブル、情報を表示する各ユーザーに1つのユーザーが共有できるようになっています。
2つのテーブルは、30分おきにリフレッシュされ、毎分3回リフレッシュされます。
毎回100万件のクエリが表示される場合、この人はブラウザを離れたままにしておきます。しばらくしてからセッションを終了させるセッションハンドラがありますが、家に帰る前にそれらをリフレッシュすると、さらに9時間実行されます。
この時点でSalesforce管理者は私にはあまり好きではありません。
だから私は何らかの種類のシステムやキャッシュをオフロードしようとしています。また、すべてをコピーするローカルDBを持たないようにするには、読み込むデータの読み込みは毎分3回です。
だから、私はワニスキャッシュにチャンスを与えることに決めました。
問題は、キャッシュからテーブルコンテンツをクライアントに配信しないことです。HTMLパートがレンダリングされるように見えますが、ダッシュボードサイトが実行されるバックエンドサーバーからテーブルコンテンツがフェッチされ続けるように見えます。
~# varnishstat -1 | grep "cache_hit \|cache_miss \|cache_hitpass"
MAIN.cache_hit 44 0.00 Cache hits
MAIN.cache_hitpass 0 0.00 Cache hits for pass.
MAIN.cache_miss 16436 0.59 Cache misses
私もそれが可能なのか分からないので、私は助言に感謝します。
これは私が基本的に「PHPSESSID」を維持するために、すべてのクッキーをキャッシュしようとしているニスconfに、
sub vcl_recv {
if (!(req.http.host == "test.local")) {
unset req.http.Cookie;
}
}
です。私はまた、POSTのキャッシュとGETを試みましたが、それは本当にトリックもしませんでした。
if (!(req.method ~ "GET") && !(req.method ~ "POST")) {
return (pass);
}
ワニスは、このシナリオで、または別の方法でクエリを削減する方法で動作するように取得する方法上の任意のアイデア?
乾杯。
ソースで問題を解決します。 Salesforceから回答をキャッシュします。例えばredisまたはmemcacheを使用します。ワニスを続行したい場合はhttps://stackoverflow.com/questions/4273734/how-to-make-varnish-ignore-not-delete-cookiesを読んでください。しかし、それはかなり厄介な結果をもたらすかもしれません。 –
はバックエンドにアクセスできないため、Salesforce管理者はしません。それは問題なので、中間またはフロントエンドの解決策を見つける必要があります – eLGusto
あなたは不運です。応答がユーザー間で共有されないようにPHPSESSIDを保持する必要がある場合は、キャッシュするものはありません。ユーザーごとにレスポンスをキャッシュしても、失効したデータを返すため、最初はテーブルをリフレッシュする目的に反します。あなたは、JavaScriptでリフレッシュレートを減らすことによって同じことを達成することができます。 –