14

私は、2000 年にさかのぼるファイルを含む多数の Web サイトに取り組んでいます。これらのサイトは、時間の経過とともに組織的に成長し、その結果、ファイル、画像、CSS ファイル、JavaScript ファイルなどを含む多数の孤立した Web ページが生じました。これらの孤立したファイルは、保守性の悪さ、セキュリティ ホールの可能性、カスタマー エクスペリエンスの悪さ、私のような OCD/GTD マニアを夢中にさせることなど、多くの問題があります。

これらのファイルは数千にも及ぶため、完全に手動で解決することは現実的ではありません。最終的に、クリーンアップ プロセスには、必要なファイルを誤って削除しないようにするために、かなり大規模な QA 作業が必要になりますが、手動作業を高速化するための技術的ソリューションを開発したいと考えています。さらに、この混乱状態が将来発生するのを防ぐために、プロセス/ユーティリティを導入したいと考えています。

環境に関する考慮事項:

  • 従来の ASP と .Net
  • IIS 6 および IIS 7 を実行している Windows サーバー
  • 複数の環境 (開発、統合、QA、ステージ、本番)
  • ソース管理用の TFS

始める前に、同様のプロセスをうまくナビゲートした他の人からフィードバックを得たいと思います.

具体的には、私は探しています:

  • 孤立したファイルを特定してクリーンアップするプロセス
  • 孤立したファイルから環境をクリーンに保つためのプロセス
  • 孤立したファイルの特定に役立つユーティリティ
  • 壊れたリンクを特定するのに役立つユーティリティ (ファイルが削除された後)

私は探していません:

  • 組織の強迫性障害の解決策...自分のやり方が好きです。
  • Snide は、私たちが依然として従来の ASP を使用していることについてコメントしています。私はすでに痛みを感じています。すり込む必要はありません。
4

4 に答える 4

2

最初は、ファイルをスキャンしてリンクを探し、フォルダー構造に対して diff を実行することで回避できると考えていましたが、これは単純な孤立ファイルのみを識別し、相互に参照する孤立ファイルのコレクションを識別しません。そのため、grep を使用しても、おそらくそこまでたどり着くことはできません。

これは簡単な解決策ではありませんが、環境をきれいに保つための優れたユーティリティになります (したがって、努力する価値があります)。さらに、すべての環境で再利用できます (そして他のユーザーと共有できます!)。

基本的な考え方は、各ノードのキーが絶対パスである方向グラフを設定して入力することです。これは、すべてのファイルをスキャンして依存関係を追加することによって行われます。たとえば、次のようになります。

/index.html     -> /subfolder/file.jpg
                -> /subfolder/temp.html
                -> /error.html
/temp.html      -> /index.html
/error.html     
/stray.html     -> /index.html
/abandoned.html

次に、ルート ページで BFS を実行することにより、すべての「到達可能な」ファイルを特定できます。

有向グラフを使用すると、ファイルをイン度とアウト度で分類することもできます。上記の例では:

/index.html     in: 1 out: 2
/temp.html      in: 1 out: 1
/error.html     in: 1 out: 0
/stray.html     in: 0 out: 1
/abandoned.html in: 0 out: 0

したがって、基本的には in = 0 で放棄されたファイルを探しています。

さらに、out = 0 のファイルはターミナル ページになります。これは、サイトで望ましい場合と望ましくない場合があります (エラーが示唆するように、これはエラー ページです)。

于 2009-11-09T18:23:52.653 に答える
1

ここに悪意のあるコメントはありません... 私たちのサイトの大部分がまだ従来の ASP であるため、あなたの苦痛を感じています。

完全に自動化されたシステムが魔法の弾丸になるかどうかはわかりませんが、何が役立つかについていくつかのアイデアがあります. 少なくとも、それが私たちのサイトをクリーンアップした方法です.

まず、このような作業にはあまり適していないように思えますが、私は Microsoft Viso を使用してこれを支援しました。エンタープライズ アーキテクト向けの Visio があり、この機能が他のバージョンにあるかどうかはわかりませんが、このバージョンでは、新しいドキュメントを作成でき、[Web ダイアグラム] フォルダーの下の [描画タイプの選択] に、 「Web サイト マップ」のオプション (メートル法または米国単位のいずれでも構いません)。

この図面の種類を作成すると、Visio は Web サイトの URL の入力を求め、Web サイトをクロールします。

これは、有効なファイルを特定するのに役立ちます。これは完全ではありませんが、Visio 図面に表示されなかったファイル システム内のファイルを見つけてから、Visual Studio でソリューション全体を取得し、そのファイル名を検索するという方法で使用しました。ソリューション全体で見つからない場合は、1 か月間「廃止」フォルダに移動し、Web サイトで苦情や 404 エラーが発生し始めなければ削除しました。

他の可能な解決策は、ログ ファイル パーサーを使用して、過去nか月間のログを解析し、この方法で不足しているファイルを探すことですが、それは本質的に、実際に「既知の適切な」ファイルのリストを作成するための多くのコーディングになります。 Visio オプションに勝るものはありません。

于 2009-11-09T18:09:19.663 に答える
1

ステップ 1: サイト上で確実に表示されるページのリストを作成します。このリストを作成する賢い方法の 1 つは、ユーザーがアクセスしたページのログ ファイルを解析することです。

ステップ 2: サイト トポロジを再帰的に見つけるツールを実行します。これは、ステップ 1 の各ページへのリンクを含む特別に作成されたページ (サイトで作成するページ) から開始します。これを実行できるツールの 1 つに、Xenu の Link Sleuthがあります。これは無効なリンクを見つけることを目的としていますが、有効なリンクもリストします。これは外部で実行できるため、「奇妙な」ソフトウェアをサーバーにインストールしてもセキュリティ上の懸念はありません。バグなどがある場合、サイトには無限のページなどが含まれる可能性があるため、これを時々監視する必要があります。

ステップ 3: サイトの Web ディレクトリから開始して、ハード ディスクを再帰的にマップするツールを実行します。頭の中でこれらのどれも思い浮かびませんが、書くのは些細なことであり、サーバー上で実行されるため、より安全です。

ステップ 4: ステップ 2 と 3 の結果を取得し、プログラムによって #2 と #3 を照合します。#2 にない #3 のものは、孤立したページである可能性があります。

注: この手法は、パスワードで保護されたものではうまく機能せず、動的に生成されたリンクに大きく依存しているサイトでもうまく機能しません (リンクが一貫している場合、動的コンテンツは問題ありません)。

于 2009-11-09T18:16:18.440 に答える
0

そこに行って、何度もやった。コンテンツ タイプを自分でクリーンアップできないのはなぜですか? 個人的には、次のように打ちます。

1) QA 環境で実行されているサイトのコピーを取得します。

2) selinum (またはその他のブラウザベースのテスト ツール) を使用して、機能するものの一連のテストを作成します。

3) 削除すべきものの削除を開始します。

4) ものを削除した後、#2 からテストを実行して、引き続き機能することを確認します。

5) 満足するまで 3 と 4 を繰り返します。

于 2009-11-09T20:04:28.363 に答える