C# と VB.NET の質問掲示板

ASP.NET、C++/CLI、Java 何でもどうぞ

C# と VB.NET の入門サイト

Re[8]: WebRequestクラスのリクセストについて


(過去ログ 52 を表示中)

[トピック内 11 記事 (1 - 11 表示)]  << 0 >>

■28525 / inTopicNo.1)  WebRequestクラスのリクセストについて
  
□投稿者/ .NET初心者 (1回)-(2008/11/27(Thu) 13:25:35)

分類:[ASP.NET (VB)] 

OS:WINDOWS2003
言語:ASP.NET(VB)
.NET Framework1.1

初めまして。
いつも参考にさせて頂いております。

ある商品詳細画面を作成しております。
仕様上、この画面が表示される際に関連商品(10商品)の画像をキャッシュさせる必要があります。
この画像を画像作成URLにパラメータを付与して動的に作成しております。
以下該当個所のスクリプトを記載いたします。

***************************************************
'関連商品のURLを作成する
Call CreateCacheImageURL(CachePoductURL())

'関連商品画像をキャッシュさせる
For i = 0 TO CachePoductURL.Length - 1
 req = WebRequest.Create(CachePoductURL(i))
 req.Timeout = 10000
 res = req.GetResponse()
 res.Close
Next
***************************************************

上記の方法で、関連商品の画像がキャッシュされるのですが、画像作成URLからの
戻りに3秒ほどかかってしまうため、この個所で30秒ほどまたされてしまいます。
こちらをなんとか解消出来ないかと考えております。

※上記の個所を高速で処理して(画像作成URLにリクエスト投げて戻りは見ない?)画面表示後に
徐々にキャッシュされていくイメージです。

どなたかご教示頂ければ幸いです。

宜しくお願い致します。
引用返信 編集キー/
■28559 / inTopicNo.2)  Re[1]: WebRequestクラスのリクセストについて
□投稿者/ Jitta on the way (236回)-(2008/11/27(Thu) 19:03:14)
No28525 (.NET初心者 さん) に返信
> OS:WINDOWS2003
> 言語:ASP.NET(VB)
> .NET Framework1.1
>
> 初めまして。
> いつも参考にさせて頂いております。
>
> ある商品詳細画面を作成しております。
> 仕様上、この画面が表示される際に関連商品(10商品)の画像をキャッシュさせる必要があります。
> この画像を画像作成URLにパラメータを付与して動的に作成しております。
> 以下該当個所のスクリプトを記載いたします。
>
> ***************************************************
> '関連商品のURLを作成する
> Call CreateCacheImageURL(CachePoductURL())
>
> '関連商品画像をキャッシュさせる
> For i = 0 TO CachePoductURL.Length - 1
>  req = WebRequest.Create(CachePoductURL(i))
>  req.Timeout = 10000
>  res = req.GetResponse()
>  res.Close
> Next
> ***************************************************
>
> 上記の方法で、関連商品の画像がキャッシュされるのですが、画像作成URLからの
> 戻りに3秒ほどかかってしまうため、この個所で30秒ほどまたされてしまいます。
> こちらをなんとか解消出来ないかと考えております。
>
> ※上記の個所を高速で処理して(画像作成URLにリクエスト投げて戻りは見ない?)画面表示後に
> 徐々にキャッシュされていくイメージです。
>
> どなたかご教示頂ければ幸いです。
>
> 宜しくお願い致します。


えっと、まず、システムの構成から教えていただけないでしょうか。とても無駄なことをしているように思うのですが、システムの構成上、仕方のないことなのかどうか、判断が出来ません。
引用返信 編集キー/
■28562 / inTopicNo.3)  Re[2]: WebRequestクラスのリクセストについて
□投稿者/ .NET初心者 (3回)-(2008/11/27(Thu) 19:45:20)
> えっと、まず、システムの構成から教えていただけないでしょうか。とても無駄なことをしているように思うのですが、システムの構成上、仕方のないことなのかどうか、判断が出来ません。

説明不足ですいません。
システムの構成とはこの仕様になった背景の事でよろしいでしょうか。

画面の真ん中に自分が選択した商品画像が表示され、関連商品のリンクが10個表示されます。
関連商品の画像をキャッシュしてないと関連商品のリンククリック時にまた3〜5秒待たされるので
これをなんとか避けられないかとの要望です。

画像作成URLについて説明させて頂きますと、パーツ事に分けられたpngファイルをレイヤーで1つのjpgにして
戻してくれます、これに3秒〜5秒かかります。
※よって関連画像をキャッシュさせなくても画面表示に3秒ほどかかります。

ちなみにバッチ処理で1日1回全パターンをキャッシュさせようかと思ったのですが、
組みあわせのパターンが多すぎて断念致しました。

こちらで説明になっておりますでしょうか?

宜しくお願い致します。
引用返信 編集キー/
■28570 / inTopicNo.4)  Re[3]: WebRequestクラスのリクセストについて
□投稿者/ Jitta (543回)-(2008/11/27(Thu) 23:31:12)
Jitta さんの Web サイト
No28562 (.NET初心者 さん) に返信
>>えっと、まず、システムの構成から教えていただけないでしょうか。とても無駄なことをしているように思うのですが、システムの構成上、仕方のないことなのかどうか、判断が出来ません。
>
> 説明不足ですいません。
> システムの構成とはこの仕様になった背景の事でよろしいでしょうか。

いえ、今作ろうとしているウェブ アプリケーションと、画像がおいてあるウェブ アプリケーションの関係が知りたいと思いました。

最初の投稿のコードは、今作ろうとしているウェブ アプリケーションだと思います。そこからなぜ、WebRequest をとばすのか、気になりました。今作ろうとしてるウェブ アプリケーションと、リクエスト先のアプリケーションが同じサーバーに置いてあるのなら、HTTP をとばさなくても直接参照できるのでは?
引用返信 編集キー/
■28582 / inTopicNo.5)  Re[4]: WebRequestクラスのリクセストについて
□投稿者/ ちゃっぴ (159回)-(2008/11/28(Fri) 01:11:42)
ちゃっぴ さんの Web サイト
File server に画像を保存しておけば終わりではないですか?
Client に返す URL は file server 上の file を参照する URL にして。

大量にたまるようであれば、batch 処理で定期的に削除すればいいでしょうし。
引用返信 編集キー/
■28618 / inTopicNo.6)  Re[5]: WebRequestクラスのリクセストについて
□投稿者/ .NET初心者 (4回)-(2008/11/28(Fri) 10:47:14)
>いえ、今作ろうとしているウェブ アプリケーションと、画像がおいてあるウェブ アプリケーションの関係が知りたいと思いました。

>最初の投稿のコードは、今作ろうとしているウェブ アプリケーションだと思います。そこからなぜ、WebRequest をとばすのか、気になりました。今作ろうとしてるウェブ アプリケーションと、リクエスト先のアプリケーションが同じサーバーに置いてあるのなら、HTTP をとばさなくても直接参照できるのでは?

説明不足ですいません。
こちらで作成するアプリケーションと画像作成URLは別サーバー(別ドメイン)になります。
その為にWebRequestでアクセスしております。
引用返信 編集キー/
■28621 / inTopicNo.7)  Re[5]: WebRequestクラスのリクセストについて
□投稿者/ .NET初心者 (5回)-(2008/11/28(Fri) 11:04:54)
No28582 (ちゃっぴ さん) に返信
> File server に画像を保存しておけば終わりではないですか?
> Client に返す URL は file server 上の file を参照する URL にして。
>
> 大量にたまるようであれば、batch 処理で定期的に削除すればいいでしょうし。

説明不足ですいません。
画像作成URLのサービスが起動するサーバー上では、画像が全てパーツ毎のカラー毎で管理してあります。
例えばですが、商品が自動車で、それが10個のパーツが存在し、各パーツがpngファイルで成り立っています。
パーツ事に10色のカラーが存在している場合、各パーツ毎、色毎に完成形の画像が100億パターン存在致します。
実際は100億パターンもない(おそらく1億程)のですが、今後アイテムが増えて行きます。

物理ファイルでの保存や、一定期間のバッチ処理でのキャッシュは上記の理由から見送りをしようかと考えております。

> 上記の方法で、関連商品の画像がキャッシュされるのですが、画像作成URLからの
> 戻りに3秒ほどかかってしまうため、この個所で30秒ほどまたされてしまいます。
> こちらをなんとか解消出来ないかと考えております。
>
> ※上記の個所を高速で処理して(画像作成URLにリクエスト投げて戻りは見ない?)画面表示後に
> 徐々にキャッシュされていくイメージです。

こちらの様な方法で実装が出来たにしても、商品画面表示時にすぐ関連商品をクリックされるとNGなのですが、
商品画面で一定滞在してもらえるたケースは、関連商品の表示が速くなるのではと思っております。
※この方法でも片手落ちなのですが、画像作成サーバーのレスポンスが遅いのを理由にして妥協して頂ければと考えています。

宜しくお願い致します。
引用返信 編集キー/
■28629 / inTopicNo.8)  Re[6]: WebRequestクラスのリクセストについて
□投稿者/ ちゃっぴ (160回)-(2008/11/28(Fri) 12:36:40)
ちゃっぴ さんの Web サイト
状況はこんな感じですかね。

・ 画像生成 Web server があり、そちらで画像を生成
・ 画像生成 Web server は user から直接見れない場所に配置
・ 毎回画像を生成していると遅い (3 〜 5 秒)
・ 作成する画像の組み合わせは果てしなく多い (100 億くらい)

で、やりたいことはこんな感じ?

一度画像を生成すると、関連した画像 (一部部品の入れ替え 10 個程度) は呼び出される可能性が高いので予めそれを予測し、先に画像を生成しておきたい。

そのために下記を試してみた。

画像生成 Web server に関連画像の requests を送り、Web server 上の memory に cache させる。

ただ、その処理を user が接続する Web server 上で同期呼び出ししているため、user に返される responses が遅くて困っている。

直接の回答としては、関連画像の requests を置くる部分を別 threads で動かしてしまえばいいと思いますが。

ただ、今後のことを考えると設計やり直した方がいいんじゃないかと思いますねぇ。。。

というのは、画像生成 Web server の memory にどれだけ cache できるのか?
また、画像生成 Web server への要求が増えた場合、当然 scale out で対応したくなりますけど、現在の構成ではそれが難しい。

私なら、file server 用意してそちらに生成した画像をがめておき、user が接続する Web server からは file server を参照するように設計しますけどね。
引用返信 編集キー/
■28634 / inTopicNo.9)  Re[7]: WebRequestクラスのリクセストについて
□投稿者/ .NET初心者 (6回)-(2008/11/28(Fri) 13:01:55)
No28629 (ちゃっぴ さん) に返信
> 状況はこんな感じですかね。
>
> ・ 画像生成 Web server があり、そちらで画像を生成
> ・ 画像生成 Web server は user から直接見れない場所に配置
> ・ 毎回画像を生成していると遅い (3 〜 5 秒)
> ・ 作成する画像の組み合わせは果てしなく多い (100 億くらい)
>
> で、やりたいことはこんな感じ?
>
> 一度画像を生成すると、関連した画像 (一部部品の入れ替え 10 個程度) は呼び出される可能性が高いので予めそれを予測し、先に画像を生成しておきたい。
>
> そのために下記を試してみた。
>
> 画像生成 Web server に関連画像の requests を送り、Web server 上の memory に cache させる。
>
> ただ、その処理を user が接続する Web server 上で同期呼び出ししているため、user に返される responses が遅くて困っている。
>
> 直接の回答としては、関連画像の requests を置くる部分を別 threads で動かしてしまえばいいと思いますが。
>
> ただ、今後のことを考えると設計やり直した方がいいんじゃないかと思いますねぇ。。。
>
> というのは、画像生成 Web server の memory にどれだけ cache できるのか?
> また、画像生成 Web server への要求が増えた場合、当然 scale out で対応したくなりますけど、現在の構成ではそれが難しい。
>
> 私なら、file server 用意してそちらに生成した画像をがめておき、user が接続する Web server からは file server を参照するように設計しますけどね。

早々のご回答ありがとうございます。
状況をまとめいただいてので客観的に分かりやすくなりました。すいません。
ご指摘に通り、こちらで画像を保持したいのですが更新作業が煩雑なのと画像生成WebServerを作成している所が上位な為に
なかなかコミニケーションが取りづらく実現には至っておりません。
※クライアントの親会社となりクライアントを介してもからも要求が通りずらいのが現状です、、、、

> 直接の回答としては、関連画像の requests を置くる部分を別 threads で動かしてしまえばいいと思いますが。

ご質問させて頂く前にThreadクラスを使用して試してみたのですが(こちら記載すればよかったのですが)、
メインのスクリプトの処理が終了すると別スレッドで動作している処理も終了してしまうようです。

宜しくお願い致します。
引用返信 編集キー/
■28644 / inTopicNo.10)  Re[8]: WebRequestクラスのリクセストについて
□投稿者/ ちゃっぴ (161回)-(2008/11/28(Fri) 13:54:33)
ちゃっぴ さんの Web サイト
> ご質問させて頂く前にThreadクラスを使用して試してみたのですが(こちら記載すればよかったのですが)、
> メインのスクリプトの処理が終了すると別スレッドで動作している処理も終了してしまうようです。

COM+ を利用して method 呼びっぱなしとかでいけませんかね。
他にも方法いろいろありそうですが。

> ご指摘に通り、こちらで画像を保持したいのですが更新作業が煩雑なのと画像生成WebServerを作成している所が上位な為に
なかなかコミニケーションが取りづらく実現には至っておりません。
> ※クライアントの親会社となりクライアントを介してもからも要求が通りずらいのが現状です、、、、

ただ、この構成だと scale out ができないですよ〜ってのはそれとなく伝えておいた方がよいかと。
設計から実装まで全部やり直しになるので。

ちゃんとやるなら cache manager のようなものを作らないとダメですね。
引用返信 編集キー/
■28693 / inTopicNo.11)  Re[8]: WebRequestクラスのリクセストについて
□投稿者/ Jitta (546回)-(2008/11/28(Fri) 22:50:59)
Jitta さんの Web サイト
No28634 (.NET初心者 さん) に返信
 「最初に全部、洗いざらい書いておいてくれた方が、短い時間で解決に向かって動き出せる」ってことは、わかっていただけたと思います。

 スレッドを分ける以外に、img 要素を生成して、別リクエストに処理させるという方法があります。これなら、IE だと2つかな?Opera だと8つくらい、同時に処理されます。
[img href="image.ascx?=画像生成のためのキー" ]

引用返信 編集キー/


トピック内ページ移動 / << 0 >>

このトピックに書きこむ

過去ログには書き込み不可

管理者用

- Child Tree -