0

カスタムphpスクリプトとGDライブラリを使用して、POSTのいくつかのデフォルトとパラメータに基づいてカスタム画像をレンダリングしています。

ユーザーがこれらのパラメーターを選択できるようにするカスタム フォームを作成し、AJAX 要求を送信して画像をレンダリングし、それを送り返し、ページにプレビューをロードしようとしています。

問題は、最初のプレビューが機能することですが、その後、プレビューを読み込めなくなります。プレビュー ウィンドウに同じ画像が表示され続けます。ただし、イメージをディスクに書き込んでおり、それは問題なく更新されているため、これは apache またはブラウザーのキャッシュであると考えられます。ここにいくつかのコードがあります:

AJAXリクエストは

preview = new Image;
preview.src = url;
$(preview).load(preview.src, imagedata, function() {                                               
   $('#gaga-preview-space').html(this);                                                             
});

ここで、imagedata は bgcolor などを含む配列です。Apache が応答をキャッシュするのを止めることを期待して、各要求のタイムスタンプも生成しています。これは他のインスタンスでは機能しましたが、このインスタンスでは機能しませんでした。

PHP 生成スクリプトは次のようになります。

// Save file
$file = "/var/www/tribegaga/sites/all/files/gaga_customization/test.png";
$result = imagepng($image, $file);

// Spit out file
header("Cache-Control: no-store, no-cache, must-revalidate, post-check=0, pre-check=0");
header("Pragma: no-cache");
header("Content-Type: image/png");
imagepng($image);

imagedestroy($image);

いくつかのヘッダーを送信していることがわかりますが、それらも問題ではありません。

おそらく、私はそれがキャッシングであると考えて間違った道を進んでいます。しかし、前述したように、生成された .png は正常に動作します。

更新:問題は、ブラウザーが画像を取得するために POST せず、GETS することでした。そのため、スクリプトは GET 文字列を送信し、すべてがうまく機能します。しかし、画像 src= http://site/script.php?string=params&test=fooなどはありません。

何か提案があれば、よろしくお願いします。

ありがとう!!

4

1 に答える 1

2

Expires (過去の日付) および Last-Modified (現在の日付/時刻) ヘッダーも設定してみてください。

于 2009-05-15T19:45:45.890 に答える