index2.html など転送量削減案
■ このスレッドは過去ログ倉庫に格納されています
0001名無し娘。 ◆vP.bOZFQ
01/08/29 23:57ID:hNInjuxsgzip対応しているブラウザにはgzip版を、非対応ブラウザにはテキスト版を
送信するcgiを挟みます。
このことにより、ブラウザのトラブルを回避し、圧縮された各コンテンツを
配給できます。
実装は以下の通り(index2.htmlの場合)
index2.cgi導入 → cgi内部でgzip対応を判断 → 適切な内容を表示 → (゚д゚)ウマー
>>2 に必要なファイル一覧と概要
>>3 にインストール方法
0002名無し娘。 ◆vP.bOZFQ
01/08/29 23:58ID:hNInjuxsftp://210.170.170.118/incoming/index/bbsmenu.cgi
ftp://210.170.170.118/incoming/index/bbstable.html
ftp://210.170.170.118/incoming/index/bbstable.cgi
ftp://210.170.170.118/incoming/index/index2.html
ftp://210.170.170.118/incoming/index/index2.cgi
ftp://210.170.170.118/incoming/index/subback.html
ftp://210.170.170.118/incoming/index/subback.cgi
bbsmenu.html bbstable.html は www.2ch.net/ におけば、そのまま使えます。
index2.html subback.html は /板名/に置きます。
*.cgi は、すべてそのまま使えます。
最終的にブラウザに表示される「実ファイル」は、xxxxx_r.html xxxxx_r.html.gz です。
index2.html -> index2_r.html
index2.htm -> index2_r.html.gz
subback.html -> subback_r.html
のようにリネームしてください。
0003名無し娘。 ◆vP.bOZFQ
01/08/29 23:59ID:hNInjuxs1)bbs.cgiをとめる
2)既存のファイル名を変更する
mv index2.htm index2_r.html.gz
mv index2.html index2_r.html
3)bbs.cgiが出力するファイル名を変更する(bbs.cgi内で指定されているファイル名)
index2.htm -> index2_r.html.gz
index2.html -> index2_r.html
4)復帰スクリプトが出力するファイル名も、同様に変える
5)ftp://210.170.170.118/incoming/index/index2.html をダウンロードし、設置する。
6)ftp://210.170.170.118/incoming/index/index2.cgi をダウンロードし、設置する
7)bbs.cgiを稼働状態に戻す
<subback>
1)bbs.cgiをとめる
2)既存のファイル名を変更する
mv subback.html subback2.html
3)bbs.cgi が出力するファイル名を変更する(bbs.cgi内で指定されているファイル名)
subback.html -> subback_r.html
4)bbs.cgi が subback_r.html を gzip圧縮した subback_r.html.gz も作るようにする
5)復帰スクリプトが出力するファイル名も、同様に変える( subback_r.html.gz は作らなくてよい)
6)ftp://210.170.170.118/incoming/index/subback.html をダウンロードし、
"xxx" を鯖名に、"yyy" を板名にそれぞれ置換し、設置する。
7)ftp://210.170.170.118/incoming/index/subback.cgi をダウンロードし、設置する
8)bbs.cgiを稼働状態に戻す
<bbsmenu.html/bbstable.html>
1)既存のファイル名を変更する
mv bbsmenu.html bbsmenu_r.html
mv bbstable.html bbstable_r.html
2)それぞれを gzip 圧縮したファイル(bbsmenu_r.html.gz bbstable_r.gz)を作る
3)ftp://210.170.170.118/incoming/index/bbsmenu.html
ftp://210.170.170.118/incoming/index/bbsmenu.cgi
ftp://210.170.170.118/incoming/index/bbstable.html
ftp://210.170.170.118/incoming/index/bbstable.cgi
をダウンロードし、設置する。
以上です。
0004デフォルトの名無しさん
01/08/30 04:54ID:v7wffiYUttp://natto.2ch.net/test/read.cgi?bbs=hp&key=998851406
でWeb制作板のindex2をCSSに対応したサンプルを作りました。
CSSがある場合の表示結果
ttp://isweb3.infoseek.co.jp/play/teess/2ch-index2-133.html
CSSが無い場合の表示結果
ttp://isweb3.infoseek.co.jp/play/teess/2ch-index2-133noncss.html
0005DolBacky
01/08/30 21:09ID:Ae23sCa20006DolBacky
01/08/30 21:11ID:Ae23sCa2プロセス起動数が半端じゃないことになりそうです。
対・効果としては利便性の向上ぐらいしかあがらないだけに、導入はつらいかも。。。
0007DolBacky
01/08/30 21:12ID:Ae23sCa20008www.2ch.net
01/08/30 21:13ID:u6a/qAt60009音楽侍 ◆NtVkSITE
01/08/30 21:13ID:KsueBNwE$さん、いま瞬間最大アクセス数って、どのくらいを記録しているのでしょう?
0010www.2ch.net
01/08/30 21:15ID:u6a/qAt6どんなバージョンの PHPでも出来るでしょ。
0012DolBacky
01/08/30 21:24ID:Ae23sCa2鯖やら時期によって違うとは思うですが、祭りやら何やらを考えた場合の最大は50/秒ぐらいかと。。。
0013DolBacky
01/08/30 21:27ID:Ae23sCa20014www.2ch.net
01/08/30 21:27ID:u6a/qAt6httpd.confはいじれるのでしょうか?
0015デフォルトの名無しさん
01/08/30 21:28ID:KsueBNwEなるほど。そんなに多いと確かにプロセス増えるのは危ないですね。
mod_gzip入ればこういう仕組みは不要でしょうけど・・・
ただ、index2.cgi自体はLocation呼ぶわけではなくそのまま要求に応えるんですが、リロードではなく
.htaccessで直接cgi呼ぶのも厳しいでしょうか?
0016DolBacky
01/08/30 21:31ID:Ae23sCa2サーバでフィルタをかますのが一番良いと僕も思ってるんですけど、
サーバの設定をいじるのはNGらしく。。。
※そのへんが今回のようなケースへの対応を技術的に難しくしちゃうです。。。
0017DolBacky
01/08/30 21:33ID:Ae23sCa2MOD_PERLの有無に依るんですが、
PERL_CGIはサイズの大小を問わずインタプリタを起こしちゃう…ってのが問題です。
0018DolBacky
01/08/30 21:36ID:Ae23sCa2これだと、1ユーザが1度しか呼びませんので。。。
0019音楽侍 ◆NtVkSITE
01/08/30 21:37ID:KsueBNwEああ、そうですね。
Cでのcgi化も可能なんですが(というか、同じもののCソースもあるのですが)、Cでもその辺の事情は変わらないのでしょうか?
0020DolBacky
01/08/30 21:41ID:Ae23sCa2どちらも実行形態は似ています(Perlは「エンジンのロードとコンパイルの2クッションが入ります)が、
ネイティブコードですのでプロセスのサイズは小さくなりますし、コンパイルの手間も省ける分軽いです。
ただ、リクエスト数が膨大になると結果起こることは、Perlと似たり寄ったりになるです。。。
0021名無し娘。 ◆vP.bOZFQ
01/08/30 21:42ID:QPVBUxP6どうもお疲れさまです。
そうですね。subbackもbbstableも、gzip圧縮されたのと非圧縮のとが
あるようです。
要は、IEとかNNの新しいのを使ってるユーザーの皆さんには、もっと
積極的に .htm のほうを使っていただきたいんですよね。。。
しかし、read.cgiでは一律に .html へのリンクをはって・・・!!
read.cgiスレの方で改善案出してきます(泣
0023DolBacky
01/08/30 21:45ID:Ae23sCa20024DolBacky
01/08/30 21:47ID:Ae23sCa2そうですね。index2.htmlのリンクはすべてindex2.htmとなっていますので、
使っているうちにindex2.htmへと移動することになりますから、それで良いと思います。
※相変わらず、GZIPに対応できない方は突如文字化けすることになりますが。。。
でも、read.cgiでやるなら(僕もソースみさせて頂きました)GZIP対応か否かの判定は
できているので、htmlかhtmを選別してLocationできると思います。
0025音楽侍 ◆NtVkSITE
01/08/30 21:51ID:KsueBNwE20分で1000Resつくような板(ニュース速報)があることを考えれば、たしかにプロセス圧迫死の恐怖は大きいですね。
ただ、転送料を減らすという視点からいうと、もしgzip化するのであれば、
こういった仕組みをどこかに入れない限り、常にユーザからのクレームが出続けますねぇ。
夜勤さんにお願いして(サーバが死ぬかもしれませんということを)、評価テストとか出来ないでしょうか?
・・・机上で分かり切ってるレベルなのかなぁ?
0026名無し娘。 ◆vP.bOZFQ
01/08/30 21:51ID:QPVBUxP6bbsmenu.htm[l] を判別させるのも、>>1-3 でできておりますので、
良かったらお使い下さい。
>>24
はい。その通りです。
0028名無し娘。 ◆vP.bOZFQ
01/08/30 21:55ID:QPVBUxP6あとは、
「gzip 圧縮対応ブラウザなのに(今までの習慣で)明示的に index2.html を指定してくるユーザー」
だけが残ることになります。
できるだけ .htm を積極的に試してもらえるよう、各板にもっとアナウンスは
できないでしょうか?
0029DolBacky
01/08/30 21:55ID:Ae23sCa2そこは夜勤さんの判断によりますね。
サーバの最大プロセス起動数をいじらなくちゃならないんで。。。
0030Perler ◆GSi39OA6
01/08/30 21:58ID:pHny07V6>>28
その場合、文字化けは解決できますが、Last-Modifiedが出ないので
キャッシュの効果が期待できないんですよね。。。
文字化けしない分現状よりはましになるとは思いますが。
0031音楽侍 ◆NtVkSITE
01/08/30 21:58ID:KsueBNwEわたしも、何とかならないのかな?って思います。
ただし、起動しているのがread.cgiだけではないことを考えれば、そう一概に言い切れないんですけれど。
実際、今でも深夜には300復帰がかけられない状況があるわけですから。
>>29
そうですね。
index2.cgiについては、夜勤さんの判断をお聞きしてみたいです。
0032DolBacky
01/08/30 22:04ID:Ae23sCa2これは入れちゃいたいでーす。
>>27
必要なのは「いけますよん」という夜勤さんのGOっすね。
転送量事件のみならずプロセス事件まで起こっちゃ、コトです。
>>28
明示的にhtmlを狙ってリロードをかけない限りは大丈夫です。
現在のところ、
html->書き込み(BBS.CGI)時のブラウザ判定->htm[l]
html->リロード->htm
read.cgi->html
…となっているので、htm対応ユーザは自動的にhtmへと意向するようになっています。
※でも、htm対応ユーザには明示的にhtmを呼んでもらうのが一番良いですね。。。
0033名無し娘。 ◆vP.bOZFQ
01/08/30 22:19ID:QPVBUxP6お願いしますです>bbsmenu
index2.html に[ブックマーク/お気に入り]してる人が、
結構いると思うんですよね。>移行
0034デフォルトの名無しさん
01/08/30 22:21ID:N/.0WZiwindex2.htm に 「こっちにブックマーク夜露死苦!」 とでも書くとか。
0035Perler ◆GSi39OA6
01/08/30 22:22ID:pHny07V6index2.cgiとmirror.plと、どちらが開発が急がれていますか?
index2.cgiのほうだと思うんですが、そちらの開発の検討に手をつけてしまって
構わないでしょうか?
0037DolBacky
01/08/30 22:28ID:Ae23sCa20038名無し娘。 ◆vP.bOZFQ
01/08/30 22:31ID:QPVBUxP6失礼しました。
index2.cgi そのものは、今すぐ動く状態まで開発されています。
あとやるとしたら、C への移植かな。。。 >>19-20 があるけれども。
0039Perler ◆GSi39OA6
01/08/30 22:35ID:pHny07V6了解しました。
今、プロセス起動数について調べていますので、これが済んだらmirror.pl
に移ります。
nph-使うと負荷節約できると思ったのに駄目でした。。。
0040デフォルトの名無しさん
01/08/30 22:40ID:m1Lt46x2ここ数日何度も推敲され、異論は出てないようです。
こういう感じでも検討お願いします。
http://isweb3.infoseek.co.jp/play/teess/2ch-index2-133.html
0041Perler ◆GSi39OA6
01/08/30 22:41ID:pHny07V6スクリプトの最初の方で、
fork && exit;
Cなら
if(fork())exit(1);
をやって、プロセスをデーモン化させておくと、
親プロセス(httpd)がCGIへのwaitが完了するので、Apacheの同時最大接続数が結構節約
できるような気がするのですが、有効だと思いますか?
0042デフォルトの名無しさん
01/08/30 22:43ID:hK6im.XQhttp://natto.2ch.net/test/read.cgi?bbs=hp&key=998851406&ls=20
0043音楽侍 ◆NtVkSITE
01/08/30 22:56ID:KsueBNwEあれ。Cソースなかったんでしたっけ?私もちょっと混乱気味です。
$さんのおっしゃるとおり、もし実装するにしてもCベースになろうかと思いますので、Cの開発は、進めた方がよいのではと思います。
すみません。
0044名無し娘。 ◆vP.bOZFQ
01/08/30 23:21ID:QPVBUxP6ちと調べてみます。
>>43
はじめはCだったのですが、ある事情でわざわざperlに移植したんです(^^;
スレを全部読むと見えてくると思います。
結論として、Cの方が良いというのは一致していますので、再移植しましょうか。
0045DolBacky
01/08/30 23:44ID:Ae23sCa20046名無し娘。 ◆vP.bOZFQ
01/08/30 23:45ID:QPVBUxP6Apacheのほうは節約できそうです。
起動プロセスそのものが増えてしまうのは、仕方のないところですが。
0047名無し娘。 ◆vP.bOZFQ
01/08/30 23:46ID:QPVBUxP6ほにょー(^^;
楽しみです。
bbsmenu などもいれていくにあたって、将来的に C の方がよろしければ
移植しておきますが、どうでしょうか?
0048デフォルトの名無しさん
01/08/30 23:52ID:RSyGf5Achttp://www.psychedance.com/test/read.cgi/tech/998921988/1-50
のような形式が使えるようにして、HTMLの
総量を減らそうというプロジェクトが
ほぼ完成してます。
よかったらご覧あれ。
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=999097075&ls=100
0049♯6411
01/08/30 23:54ID:RSyGf5Acread.cgi改良スレ
http://piza2.2ch.net/test/read.cgi?bbs=tech&key=998997848&ls=100
0050DolBacky
01/08/30 23:56ID:Ae23sCa2http://saki.2ch.net/geino/index2.cgi
http://saki.2ch.net/kouri/index2.cgi
0051Perler ◆GSi39OA6
01/08/30 23:56ID:pHny07V6と私も思ったんですが。。。
現状のApache(1.3.x以降)だと、nph-する、しないに関わらずhttpd側でのバッファリングは一切やらない
(クライアントにリダイレクトしちゃう)みたいなので、昔のApacheで言われていたバッファリングによる
オーバーヘッドの回避はないらしいです。
ヘッダのパースで生じるオーバーヘッドもほとんどないような気がします。
0052-
01/08/31 00:01ID:T/P7rad.HTTP/1.1 200 OK
Date: Thu, 30 Aug 2001 14:59:11 GMT
Server: Apache/1.3.6 (Unix) PHP/4.0.3pl1 mod_ssl/2.3.6 OpenSSL/0.9.3a
Content-Encoding: gzip
Content-Length: 14751
Last-Modified: Thu, 30 Aug 2001 14:59:00 GMT
Connection: close
Content-Type: text/html
0053名無し娘。 ◆vP.bOZFQ
01/08/31 00:04ID:s8ksSf.2振り分け、こちらでも確認しました。ちゃんと http_encoding みています。
>>51
およよ〜。
0054DolBacky
01/08/31 00:05ID:NhKnEYPMリロード先&書き込み後のジャンプ先もindex2.cgiとなりました。
0055音楽侍 ◆NtVkSITE
01/08/31 00:06ID:Ha76ETskそうですよね(笑)
Cベースのスタートだったのは記憶していたので。
0056名無し娘。 ◆vP.bOZFQ
01/08/31 00:16ID:s8ksSf.2index2.htm[l] が更新されない限りリロードにも応じない機能も、
ちゃんと動作しています。
read.cgi の新しいバージョンも、導入できる状態にありますので、
可能なときにお願いしますです。
0057| - -)
01/08/31 00:18ID:W1MB8EFM0058音楽侍 ◆NtVkSITE
01/08/31 00:20ID:Ha76ETsk書き込み後のジャンプ先、HTTP1.0と1.1で確認しました。
確認に大学受験板を使いましたが、HTTP1.0用のindex2.html、subbackへのリンクがsubback.htm になっていて、生gzip吐いていますです>大学受験板。
0059名無し娘。 ◆vP.bOZFQ
01/08/31 00:25ID:s8ksSf.2そうかもしれないですね。全板、この調子で導入できるのであれば。
>>58
.html -> subback.htm になってますね。全板。
subback.cgi へのリンクにしていただけるとよさそう。
0060デフォルトの名無しさん
01/08/31 00:30ID:MkV83E8o0062DolBacky
01/08/31 01:09ID:NhKnEYPM全体への反映には時間を要します・・・とりあえずsaki鯖のみでちょっとデータとりしてもらいます。
0063デフォルトの名無しさん
01/08/31 01:33ID:PS9zdCQgプロセス状況の確認には、不適当じゃないですか。
0064名無し娘。 ◆vP.bOZFQ
01/08/31 01:55ID:s8ksSf.2移植してみたので、どなたかご確認下さい。
0065音楽侍 ◆NtVkSITE
01/08/31 02:12ID:Ha76ETsk# gcc index2.c -o index2.cgi
index2.c: In function `getFileLastmod':
index2.c:30: structure has no member named `st_mtimespec'
無知ですいません。どうしたらいいのでしょうか?
0066Perler ◆GSi39OA6
01/08/31 02:16ID:rQ/b6THAstruct timespec ccc;
if(!stat(file,&CountStat)) ccc = CountStat.st_mtimespec;
return ccc.tv_sec;
となっている部分を、
time_t ccc;
if(!stat(file,&CountStat)) ccc = CountStat.st_mtime;
return ccc;
としてみてください。
0068音楽侍 ◆NtVkSITE
01/08/31 02:35ID:Ha76ETsk/tmp/cc0XN3I3.o: In function `main':
/tmp/cc0XN3I3.o(.text+0x23d): undefined reference to `ap_parseHTTPdate'
collect2: ld returned 1 exit status
ですです。
0070| - -)
01/08/31 03:10ID:W1MB8EFM0071名無し娘。 ◆vP.bOZFQ
01/08/31 03:21ID:s8ksSf.2...そのためにわざわざ
ftp://210.170.170.118/incoming/index/
にその2ファイル置いておいたんだった(鬱氏
どなたか Makefile 作ってくだされ。。。逝てきますゆえ(謎
0073音楽侍 ◆NtVkSITE
01/08/31 03:33ID:Ha76ETsk0074名無し娘。 ◆vP.bOZFQ
01/08/31 04:21ID:s8ksSf.2ありがとうございます。
>>73
ftp://210.170.170.118/incoming/index/c/
に移動したです。
0075音楽侍 ◆NtVkSITE
01/08/31 04:55ID:Ha76ETskワーニング出てましたがコンパイルできましたです。
これから環境整えてみます。
0076名無し娘。 ◆vP.bOZFQ
01/08/31 08:23ID:s8ksSf.2index2.cgi が fork して、一方で apache にクライアントへの port forward を
指示させて終了、一方で forward 先の port 開くなり daemon に開かせておくなり
してそちらで出力、ってのは。。。304多い場合は無駄になりそうだ。
0077デフォルトの名無しさん
01/08/31 13:40ID:FJ6U.z2k圧縮した「index2.html.gz」と非圧縮の「index2.html.」(←末尾の
ピリオドに注目)を用意したとき、「index2.html」(←ピリオドなし)
へリクエストすると、Accept-Encodingに応じて適切なほうを
自動選択して返してくれます。
mod_negotiatinは標準で入っているはずなので、
これで同時起動プロセス数の問題は解決すると思いますが…。
0078ななし2ちゃねらー
01/08/31 17:03ID:5HVwqXcoご苦労様です。
これが全部の板に広まって転送量が劇的に減れば
売り出しオークションを途中で止めるかもしれないので
なるべく完成させてください。
0079名無し娘。 ◆vP.bOZFQ
01/08/31 18:05ID:0C9lj0zQ.htaccess のそれらの記述があの鯖ですべて設定可能かどうかがわからないのですが、
できるといいですね。。。
0080Name Not Found
01/08/31 18:15ID:Cqud2TUw新cgiの稼働状況によってはオークション中止も有り得るって、、、、、、
それマジ??
0081デフォルトの名無しさん
01/08/31 19:15ID:Rl8iN43Iなんか mod_gzip や zlib のことを考えると、
AllowOverride None になっていそうで怖いですよね。
>>80
そういう話題はこのスレじゃなくて他のスレでやってね。
0082デフォルトの名無しさん
01/08/31 19:30ID:tmEODh6oでも、kakoにpass掛かってるところをみると一応通るのでは?
0083名無し娘。 ◆vP.bOZFQ
01/08/31 20:41ID:j3QpentUhttp://www.he.net/~jdoe/info/htaccess/demo.html
http://www.he.net/~jdoe/info/htaccess/htaccess2.txt
これが絶対ではないけれども、無効にされる記述はかなり多いと覚悟した方が
よさそうです。。。
008498er ◆8OGY65D6
01/09/01 04:22ID:o1qQPfoE<BASE> タグがあるのは構わないんですが、
<HEAD>〜</HEAD> の中に入っていないのでうちの browser ではリンクを正常に辿れません。
0085デフォルトの名無しさん
01/09/01 07:29ID:zo6sNa6A0086あぼーん
NGNG■ このスレッドは過去ログ倉庫に格納されています