旧 vio_T
テーマ切り替えボタンの用合い検討(4歩),新規描出フォームへの移動機能として吹き描き外背景のダブルクリック用合いの復活(10歩),全知検索ページャー周りの調整(16歩),こまごまとした領当て・装体調整(17歩)といった雑多ながら充実した作業を片付け,ついに描写後略機能を一段落させた(21歩)。出振るい・手定め済み。
描写後略機能により,デライト最初期から吹き描きの構造的問題だった「不必要な出与え読み込みの多さ」という問題が解消した。表示速度向上,通信量削減,SEO 強化,迷惑行為対策など多大な効果が見込める。
昨年末の壊衝不具合修正以後,デライトは速度・安定性ともにウェブ相振りとして十分な水準に達していたが,今回の高速化を経て,明らかにもう一つ壁を越えた感がある。体感として,「ウェブ相振りなら特に不満のない速さ」から「単動相振りと比べても遜色のない速さ」になった。
一昨年4月9日に掲げた「全ページ0.3秒以内表示」という目標は埋め込み利素を考えると現実的ではない気がしてきたものの,軽いページでは200ms台,重いページでも概ね300ms台で応答出来るようになっている。実感として欲しかった速度は手に入れられたし,最適化余地はまだまだ残しているので「埋め込み利素を除いてほぼ全てのページで0.3秒以内表示」なら十分手が届く。いよいよ本格的に,速さがデライトの武器になってきた。
ここで新生デライト開発におけるデライト高速化は一段落とし,今後は機能追加やトラフィックに応じた微調整に留め,別の機能整備に集中することにした。
その先のデライト高速化については,大きなところでは CDN 導入,KNEST による水平拡大,請い手の隠し機能整備,描写 HTML 隠し以外の HTML 隠し実装,そして中途半端な状態で放置しているページ付け求頼改良があるが,どれも現時点での優先順位は低い。
垂直拡大の余地も十分にあるので,当面は捌き手増強で対応出来るだろう。
23日の開発から始まった一連の高速化で終えた作業は,描写 HTML 隠し実装,KNEST 隠しのクローラー対策,描写後略機能実装の3つ。
全体として,実装コストは最小限に抑えつつ効果は最大化するような落とし所を見つけられた。
これまで Dex_T
には完成した HTML を返す道手しか無かったため隠し化出来なかったが,共通バッファを返す道手(Dex_T::buf()
)とそれを閲覧条件によって仕上げる函数(Dex::fin()
)に分離し,外部で共通バッファを共有出来るようにした上で KNEST 隠し化した。
実装は oln_T
に描写 HTML を持たせることも検討したが肥大化の懸念が大きいため,分離して専用の KNEST 隠し客体を用意した。
これにより,切り分けが難しく進まなかった HTML 隠し実装が部分的にではあるが初めて実現した。デラング処理は特に大きな部分なので,その他 HTML 隠し実装の優先順位が下がった。
24日の開発で出振るい・手定め済み。長大な描写が含まれるページでは体感速度向上が見られた。
KNEST 隠しは一定の成果を上げてきたが,足枷となっていた問題として,ボット,主にクローラーに反応してしまうというものがあった。特に輪郭隠しではほとんど活用出来ない隠しに記憶領域が圧迫され,無駄な設定処理とロックが発生していた。当然,描写 HTML 隠しでも問題になる。
そこで,ボット判定用の KNEST::req_I::b_bot()
を追加し,隠し設定用の函数群(輪数隠し以外)がボットと判定された握接で機能しないようにした。これにより,原則としてボットは KNEST 隠しを取得出来るが設定出来ないようになった。
ただし,ボット判定対象はとりあえず現時点で必要性の高い Googlebot, bingbot, Applebot のみ。迷惑クローラーの類は元々 nginx で弾くようにしているため問題ではない。適宜調整していく。
描写 HTML 隠しとともに24日の開発で出振るい・手定め済み。
昨年5月30日の開発までに実装イメージが概ねまとまっていた描写後略機能だが,描写 HTML 隠しのために共通バッファと仕上げ処理を分離するという方針から,切り分けが容易になり,一気に実装コストが下がった。
これまで,Dex_T
内部でデラング処理を中断・再開する機能としてイメージしていたため,複雑化の懸念が拭えなかった。複雑化は保守性の低下を招き,結果的に高速化にもならないということも考えられたが,Dex_T
では適当な間隔で区切り文字を挿入するだけに留め,仕上げ処理(Dex::fin()
)で切り出すという方式に単純化出来ることに気付いた。
Dex_T
が全体の行数・現在の行番号を設定する。Dex::bl_fdn_T
が部区間の境界で20行以上かつ残り行数10行以上の場合に越化参照 &_omt;
を挿入する。Dex::fin()
では全体・&_omt;
前後の3種類で出力を切り替える。div.omt
を検知し追加読み込みを行う。当初想像していたよりずっと単純化出来た上に,導入前後で使い勝手が全くと言っていいほど変わらなかったのは嬉しい結果だった。もう少し用者が意識するものになるかと思ったが,よく観察しないと気付かないほど透過的に導入出来た。輪郭小窓でも問題なく機能している。
高速化効果は言うまでもなく,長大な描写が多いページでは飛躍的に表示速度が改善した。
当初のデラング処理中断・再開機能はいったん断念し,請い手の負荷軽減を重視した格好だが,実際には捌き手側の負荷軽減もそれなりに見込めることが分かり,万々歳の結果となった。描写 HTML 隠しが活用出来る場面が想定以上に多かったこと,閲覧条件による置換処理の範囲を限定出来ることが効いている。
強いて描写後略機能の課題を挙げれば,ページ内検索の直感性を損うこと,スクロールバーで内容量が分かりにくくなることがあるが,いずれもそこまで気にする人は少ないだろうし,対策は出来る。
ページ内検索については, Ctrl + F に強制追加読み込みの省割キーを兼ねさせることが考えられる。内容量の目安としてのスクロールバーは厳密さよりも少なそうか多そうかがざっくり分かることが重要なので,例えば実際の内容量よりも少なく見えないように後略条件なり下余白を調整すれば実用上の問題は無いだろう。
KNEST::rep_I
}{どうやって}{必要な情報}{oln_T
}{自我知番省略機能実装}{希哲16年6月の開発}(28)DG_T
}{ego_T
}(26)oln_T
}{デライト正式離立}{dln_T}{希哲14年1月20日の進捗時限}{希哲14年1月20日の進捗}{希哲14年1月20日}{pg_idx.h}{pg_sch.u.h}(15)oln_T
}{add_var.h
}{希哲館訳語}{デライト正式離立}{dln_T}{Delang_T}{希哲14年1月19日の進捗時限}{希哲14年1月19日の進捗}(16)