問題タブ [zend-cache]

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 投票する
1 に答える
1202 参照

php - キャッシュ中のRedisエラー「接続の読み取りがタイムアウトしました」

Zend Framework プロジェクトがあり、Rediskaを Redis クライアントとして使用することにしました。Rediska には、ZF 用のキャッシュ バックエンド アダプター - Rediska_Zend_Cache_Backend_Redis があります。

オブジェクトの DB コレクションからフェッチし、キャッシュに保存しようとしましたが、エラーが発生しました: 接続の読み取りがタイムアウトしました。コードの私の例:

シリアル化後のコンテンツのサイズは 26787 バイトです。たぶん、Redisには送信のサイズ制限がありますか?

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

zend-framework - Zend_Cache_Frontend_Capture と Zend_Cache_Frontend_Page の違いは何ですか

この 2 つのフロントエンド Zend_Cache_Frontend_Capture と Zend_Cache_Frontend_Page の違いを誰か説明できますか?

Capture はページ キャッシングのデフォルトのものです...奇妙なことに、get 変数で id を作成しますが、ページ フロントエンドの場合のように make_id_with_get_variables を設定するオプションはありません....

誰かがこれを説明できますか?

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

zend-framework - Zend_Cache_Backend_Staticを使用して静的ページをHTMLとしてキャッシュするZendFrameworkアプリケーションに$_GETパラメーターの数を制限することは可能ですか?

Zend_Cache_Backend_Staticを使用して静的ページキャッシュを設定し、アプリケーションでキャッシュされたhtmlファイルを提供しました。これはうまく機能しています。私が抱えている唯一の懸念は、$_GETパラメータを使用してファイルをキャッシュする方法にあります。提供されたURLルートにマップするフォルダー構造が自動的に作成されるため、これは、多数の$ _GETパラメーターが既存のページに意図的に追加される可能性がある場合の潜在的なセキュリティリスクですか?ディレクトリの最大深度またはファイルの最大長に達しましたか?

例:現時点では、ページをキャッシュしている/public/cache/static/ので、標準のルーター/module/controller/action/param1/val1/param2/val2または標準のクエリ文字列/module/controller/action?param1=val1&param2=val2を使用すると、次のディレクトリ構造が作成されます。

この方法でディレクトリ構造を作成するためのアクセスを人々に許可することは(ただし制限されますが)、私は少し心配します。Zend_Cache_Backend_Staticと対応するZend_Cache_Frontend_Captureの両方を、Zend_Cacheファクトリ経由ではなくiniファイルで設定する必要があり、セットアップオプションがないように見えます。

デフォルトルーターを$_GET変数の数を制限するカスタムルートに置き換える場合だけでしょうか?これは可能ですか、それとも各ルートに必要な変数を正確に指定する必要がありますか(世界の終わりではなく、もう少し制限があります)

アップデート:

したがって、静的キャッシュを処理するための既存の書き換えルールは次のとおりです。

リクエストが静的キャッシュのページにヒットすると、そのhtmlページが送信されます。そうでない場合は、ZendFrameworkにヒットして生成されます。

私は最初に以下を追加することができます:

これにより、クエリ文字列が完全に消去されます。Zend FrameworkのURLパスメソッドを使用して$_GET変数を渡すことができるので、これは問題ありません(これは、非常に明示的なルートを提供することによっても制限されています)。しかし、リダイレクトせずにこれを行うことは可能ですか?

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

php - Zendキャッシュバックエンド静的削除/クリーン

ZendCacheを使用してキャッシュを実装しようとしています。次のコードを使用してキャッシュを初期化します。


次のコードを使用してキャッシュを開始します。

キャッシュファイルは生成されますが、次の方法を使用して削除できませんremove()(キャッシュは更新されません)。

私は何を間違っているのですか?ありがとう。

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

zend-framework - zendでhtml出力全体をキャッシュする

Zend_Cache を使用して、レイアウト スクリプトとコントローラのアクション スクリプトによって出力されるすべてのものをキャッシュしようとしていますが、正しく機能していません。私が得るのは

DEBUG HEADER: これはキャッシュされたページです。

layout.phtml スクリプトと index.phtml スクリプトを取得しました。どちらも html コードを生成します。私のIndexControllerに入れました

それを機能させる方法は?HTMLコードはキャッシュフォルダーに保存する必要があると思います。

0 投票する
4 に答える
3922 参照

php - 完全なページ キャッシュ、更新のブロック

フル ページ キャッシュを実装したいのですが、現在、対処すべき問題が 1 つあります。

私たちは、Zend と Varien のライブラリである Magento E-commerce Community Edition に基づく E コマース システムを使用しています。

出力をキャッシュできますが、唯一の問題は、次の状況に対処する方法です。

ユーザーがサイトにアクセスしてから、カタログ/製品に移動し、製品をカートに追加してから、カタログに戻ります。

問題は、製品をカートに追加するときに、更新が必要な特定のブロックがいくつかあることです。したがって、投稿リクエストのキャッシュを無効にすることはできますが、特定のブロックを更新する方法や、更新されるこの「プレースホルダー」を実装する方法を教えてください。キャッシングの「ベストプラクティス」またはパターンがいくつかあると思います。

PS magento 関係者へ: Enterprise Edition と有料モジュールについて思い出させないでください。

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

php - zendフレームワークのインメモリスクリプトキャッシュバックエンド

Zend_Cachezendフレームワークを使用して、メモリ内のスクリプトキャッシュのソリューションを探しています。

このアプリケーションにはいくつかのケースがあります。たとえば、100個の要素を含むテーブルを表示するためのロジックは、次のとおりです。

  • コンテンツテーブルから100個のアイテムをフェッチします(単一のクエリ)
  • すべてのアイテムについて、作成者ユーザーと、db / memcacheバックエンドからコンテンツを承認したユーザーを取得します(これは通常、forループから実行されます)

ほとんどの場合、コンテンツを承認したユーザーは2人または3人の管理者ユーザーですが、スクリプトはデータベース/memecacheを複数回呼び出します。さらに悪いことに、ユーザーモデルは、ユーザーがどの役割に属し、どのコミュニティにも属しているかを知るために3つの異なるテーブルを照会する必要があります。

したがって、全体として、100アイテムのテーブルを表示するために、データベース(またはmemcacheサーバー)に600回クエリを実行します:-)

私はここで2つの解決策について考えていました:

  • ループ内のusersテーブルをクエリしないでください。100個のアイテムをループし、すべてのユーザーIDを取得し、1回のクエリですべてのユーザーを取得します。これが適切な解決策になるかどうかはわかりません。SQL結合を記述して、モデル関数が非を返すようにする必要がZend_Db_Table_Rowあるためです。これは、頻繁に使用します。

  • 別の解決策は、最初のロード時にユーザーオブジェクトをメモリ内キャッシュ配列に保存することです。次にループがユーザーIDを読み取ろうとすると、最初にこの「特別な」メモリキャッシュで検索されます。Zend_Registryここでの解決策と同様に、キャッシュバックエンドとして使用することを考えていました: http ://sameerparwani.com/posts/using-zend_registry-as-a-zend_cache-backend

memcacheサーバーを使用しますが、スクリプトはmysqlデータベースにクエリを実行する代わりに、memcacheサーバーに数百回クエリを実行するだけです。memcacheサーバーにクエリを実行する方が高速ですが、スクリプトはすでにこのデータを読み込んでいるため、外部サーバーにクエリを実行するのではなく、スクリプト「メモリ」を使用したいと思います。

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

php - オブジェクトのシリアル化とキャッシュの奇妙な動作

絞り込めないように見える問題に直面しています。Zend Framework アプリケーションでは、Zend Cache を使用して、カスタムのResponseオブジェクトに含まれる潮と天気のデータをキャッシュしています。データが最初に作成された時点で、すべてが正常に機能します。シリアル化してキャッシュします。次に、更新を押してキャッシュからデータを取得すると、次のエラーが発生します。

メッセージ: 文字列を XML として解析できませんでした

スタックトレース:

0 /home/cillosis/mysites/tidely/application/views/scripts/tides/location.phtml(38): SimpleXMLElement->__construct('')

1 /home/cillosis/mysites/tidely/library/Zend/View.php(108): include('/home/cillosis/...')

2 /home/cillosis/mysites/tidely/library/Zend/View/Abstract.php(888): Zend_View->_run('/home/cillosis/...')

...

これは、カスタムの「応答オブジェクト」に含まれる XML に次のようにアクセスしているビューで発生します。

最初の実行時 (キャッシュ前) のオブジェクトの関連部分のダンプを次に示します。

「...」が表示されている場所には、他にも多くの XML データがあります。XML は NWS (National Weather Service) API から取得したもので、XML バリデーターで実行しましたが、エラーは表示されません。オブジェクトをシリアル化してキャッシュするとすぐに問題が発生します。Zend Cache のセットアップ方法は次のとおりです。

私はこれでキャッシングと検索を行っています:

リクエストを作成してキャッシュすると、$this->responseオブジェクトは次のように出力されます。

object(Tidely_ResponseData)#65 (7) { ["_querydata"]=> object(Tidely_QueryData)#66 (9) { ["query"]=> string(40) "bayou-la-batre-mississippi-sound alabama" ["source"]=> string(15) "TidesController" ["request_type"]=> string(3) "url" ["url_components"]=> array(2) { ["state"]=> string(7) ) "アラバマ州" ["場所"]=> 文字列(32) "バイユー・ラ・バトル-ミシシッピ州の音" } ["return_type"]=> 文字列(4) "JSON" ["time_range"]=> 配列( 2) { ["start"]=> object(DateTime)#64 (3) { ["date"]=> string(19) "2012-04-05 18:06:51" ["timezone_type"]=> int(3) ["タイムゾーン"]=> string(3) "UTC" } ["end"]=>object(DateTime)#63 (3) { ["date"]=> string(19) "2012-04-06 18:06:51" ["timezone_type"]=> int(3) ["timezone"]= > string(3) "UTC" } } ["hasError"]=> bool(false) ["userMessage"]=> NULL ["logMessage"]=> NULL } ["_locationdata"]=> object(Tidely_LocationData)# 80 (31) { ["location_id"]=> string(5) "18921" ["station_name"]=> string(33) "Bayou La Batre, Mississippi Sound" ["station_url_name"]=> string(32) "バイユー・ラ・バットル・ミシシッピ・サウンド" ["station_type"]=> string(11) "Subordinate" ["station_id"]=> string(7) "8739051" ["station_lat"]=> string(8) " +30.3717" ["station_lon"]=> string(8) "-88.2750" ["station_height_offset_high"]=> string(5) "*1.23" ["station_height_offset_low"]=> string(5) "*1.23" ["station_time_offset_high"]=> string(3) "112" ["station_time_offset_low" ]=> string(2) "74" ["station_ref_station_id"]=> string(7) "8760551" ["state_id"]=> string(1) "1" ["state_name"]=> string(7) "アラバマ" ["state_url_name"]=> string(7) "alabama" ["timezone"]=> string(2) "-6" ["dst"]=> string(1) "1" ["city_name"] => string(14) "Bayou La Batre" ["city_zip"]=> string(5) "36509" ["city_lat"]=> string(7) "30.4014" ["city_lon"]=>string(8) "-88.2467" ["adjacentStations"]=> string(321) "a:10:{i:8739051;d:2.6562027890531361;s:7:"TEC4393";d:8.052929008617618;i:8740448;d :11.564338218805837;i:8735180;d:14.637787569358004;i:8741196;d:17.602722038773138;i:8734635;d:17.824002491920826;i:8733810;d:19.474837234444919;i:8737048;d:24.414028460259932;i:8742221;d:27.466706516499691 ;i:8731952;d:31.251405048051701;}" ["city_distance"]=> string(15) "2.6562027890531" ["multipleResults"]=> string(0) "" ["multipleCount"]=> int(0) [ "hasMultiple"]=> bool(false) ["showStates"]=> bool(false) ["showLocations"]=> bool(false) ["hasError"]=> bool(false) ["userMessage"]=> NULL ["logMessage"]=> NULL } ["_tidedata"]=> object(Tidely_TideData)#68 (6) { ["tideResults"]=> NULL ["queryStart"]=> NULL ["queryEnd"]=> NULL ["hasError"]=> bool(false) [" userMessage"]=> NULL ["logMessage"]=> NULL } ["_weatherdata"]=> object(Tidely_WeatherData)#79 (6) { ["weatherResults"]=> string(6399) " 気象予報 2012-04- 05T18:06:57Zhttp://graphical.weather.gov/xml/ Meteorological Development LaboratoryProduct Generation Branch http://www.nws.noaa.gov/disclaimer.html http://www.weather.gov/ http://www.weather. gov/images/xml_logo.gif http://www.weather.gov/feedback.php point1 http://forecast.weather.gov/MapClick.php?textField1=30.37&textField2=-88.28k-p24h-n1-1 2012-04-05T08:00:00-05:00 2012-04-05T20:00:00-05:00 k-p24h-n1-2 2012-04-05T20:00:00- 05:00 2012-04-06T09:00:00-05:00 k-p3h-n5-3 2012-04-05T13:00:00-05:00 2012-04-05T16:00:00-05:00 2012 -04-05T19:00:00-05:00 2012-04-05T22:00:00-05:00 2012-04-06T01:00:00-05:00 日最高気温 81 日最低気温 63 気温 79 79 74 69 67 露点温度 66 65 64 64 61 風速 12 11 11 13 14 風向 240 260 280 300 330 相対湿度 64 63 71 84 81 気象の種類、範囲、強度 条件 アイコンhttp://forecast.weather.gov/ images/wtf/tsra60.jpg http://forecast.weather.gov/images/wtf/tsra60.jpg http://forecast.weather.gov/images/wtf/scttsra60.jpg http://forecast.weather.gov /images/wtf/nscttsra20.jpghttp://forecast.weather.gov/images/wtf/nsct.jpg " ["queryStart"]=> float(1333649211.6989) ["queryEnd"]=> float(1333649217.2038) ["hasError"]=> bool(false) ) ["userMessage"]=> NULL ["logMessage"]=> NULL } ["hasError"]=> bool(false) ["userMessage"]=> NULL ["logMessage"]=> NULL }

ソースを表示すると、「weatherResults」セクションに XML があります。かなり長いので、コピーして貼り付けません。更新を押して、上記のオブジェクトのキャッシュされたコピーを使用すると、次のようになります。

object(Tidely_ResponseData)#65 (7) { ["_querydata"]=> object(Tidely_QueryData)#66 (9) { ["query"]=> string(40) "bayou-la-batre-mississippi-sound alabama" ["source"]=> string(15) "TidesController" ["request_type"]=> string(3) "url" ["url_components"]=> array(2) { ["state"]=> string(7) ) "アラバマ州" ["場所"]=> 文字列(32) "バイユー・ラ・バトル-ミシシッピ州の音" } ["return_type"]=> 文字列(4) "JSON" ["time_range"]=> 配列( 2) { ["start"]=> object(DateTime)#64 (3) { ["date"]=> string(19) "2012-04-05 18:10:30" ["timezone_type"]=> int(3) ["タイムゾーン"]=> string(3) "UTC" } ["end"]=>object(DateTime)#63 (3) { ["date"]=> string(19) "2012-04-06 18:10:30" ["timezone_type"]=> int(3) ["timezone"]= > string(3) "UTC" } } ["hasError"]=> bool(false) ["userMessage"]=> NULL ["logMessage"]=> NULL } ["_locationdata"]=> object(Tidely_LocationData)# 67 (31) { ["location_id"]=> string(0) "" ["station_name"]=> string(0) "" ["station_url_name"]=> string(0) "" ["station_type"]= > string(0) "" ["station_id"]=> string(0) "" ["station_lat"]=> string(0) "" ["station_lon"]=> string(0) "" ["station_height_offset_high" ]=> 文字列(0) "" ["station_height_offset_low"]=> string(0) "" ["station_time_offset_high"]=> string(0) "" ["station_time_offset_low"]=> string(0) "" ["station_ref_station_id"]=> string(0) "" ["state_id"]=> string(0) "" ["state_name"]=> string(0) "" ["state_url_name"]=> string(0) "" ["timezone"]=> string(0) "" ["dst"]=> string(0) "" ["city_name"]=> string(0) "" ["city_zip"]=> string(0) "" ["city_lat"]=> string( 0) "" ["city_lon"]=> string(0) "" ["adjacentStations"]=> string(0) "" ["city_distance"]=> string(0) "" ["multipleResults"]=> string(0) "" ["multipleCount"]=> int(0) ["hasMultiple"]=> bool(false) ["showStates"]=> bool(false) ["showLocations"]= > bool(false) ["hasError"]=> bool(false) ["userMessage"]=> NULL ["logMessage"]=> NULL } ["_tidedata"]=> object(Tidely_TideData)#68 (6) { ["tideResults"]=> NULL ["queryStart"]=> NULL ["queryEnd"]=> NULL ["hasError"]=> bool(false) ["userMessage"]=> NULL ["logMessage"]=> NULL } ["_weatherdata"]=> object(Tidely_WeatherData)#69 (6) { ["weatherResults"]=> NULL ["queryStart"]=> NULL ["queryEnd"]=> NULL ["hasError"]=> bool(false) ["userMessage"]=>NULL ["logMessage"]=> NULL } ["hasError"]=> bool(false) ["userMessage"]=> NULL ["logMessage"]=> NULL }

キャッシュをシリアライズ/アンシリアライズして保存する過程で、どういうわけかすべての文字列を空または NULL に設定します! もちろん、空なので XML エラーが発生します。

Zend Cache (またはその他のキャッシュ ライブラリ) を使用してオブジェクトをキャッシュする際に問題が発生した人はいますか? これはシリーズ化と関係がありますか?不足しているキャッシュ設定はありますか? 長い説明で申し訳ありませんが、よろしくお願いします!

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

zend-framework - ZendFrameworkのバックエンドキャッシュとフロントエンドキャッシュの違い

ZendFrameworkを使用しているWebサイトにキャッシュを実装しています。

ソースコードを調べてみると、次のことがわかります。

バックエンドとフロントエンドの2つの構成が常に必要です。

そして私の問題は:

バックエンドがフロントエンド内に設定されている理由がわかりませんが
、それらの違いは何ですか?


元のソースコードは次のとおりです。

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

php - Zend Framework キャッシュの保存場所

ファイル バックエンドで Zend Framework と Zend_Cache を使用しています。

ZF のマニュアルによると、キャッシュ ファイルを保存する推奨場所は になりますが/data/cache/temp/cache. なぜ/data/cache好ましいのですか?

これは、私が言及した ZF マニュアルの一部へのリンクです: http://framework.zend.com/manual/en/project-structure.project.html