すべてのウェブ開発者が知っておくべき61のこと

すべてのウェブ開発者が知っておくべき61のこと
通常、全員のスピーチを最初から最後まで読む必要があります。ただし、Stack Overflow には非常に配慮された設計が採用されており、質問の下に wiki エリアを開いて、全員が共同でベストな回答を編集することができます。そこで、6 つの側面から 61 個の「Web サイト開発のヒント」をまとめた次の記事を用意しました。

このタイプの概要に関する質問は、このような集合知とブレインストーミング形式の回答に最も適していると思います。また、これは、Stack Overflow が Wikipedia ではできないことを実現していると私が感じた初めての瞬間でもありました。 (最近、米国のトップ 400 ウェブサイトにランクインしたのも不思議ではありません。)

私の意見では、Web 開発に関するこのような包括的な概要記事は非常に珍しいので、非常に役立ちます。 61 項目のうち、いくつを達成できたか確認してみてはいかがでしょうか。

(更新: 提案が全部で 62 個あることに今気づきました。先ほど数え間違えました。これは...恥ずかしいです。)

元の URL: http://stackoverflow.com/questions/72394

翻訳者:阮一峰

1. インターフェースとユーザーエクスペリエンス

1.1

主要なブラウザが Web 標準をどのように実装しているかを理解し、サイトがすべての主要なブラウザで適切に実行されることを確認します。少なくとも次のエンジンをテストする必要があります: Gecko ( Firefoxで使用)、Webkit ( SafariChrome 、および一部のモバイル ブラウザーで使用)、IE (テスト用に Microsoft がリリースしたアプリケーション互換性 VPC イメージを使用できます)、およびOpera 。同時に、異なるオペレーティング システムも、ブラウザーが Web サイトをレンダリングする方法に影響を与える可能性があります。

1.2

ブラウザ以外にも、携帯電話、スクリーン リーダー、検索エンジンなど、Web サイトを使用する方法は他にもあります。このような状況で Web サイトがどのように機能するかを知っておく必要があります。 MobiForge は、モバイル Web サイトの開発に関する関連知識を提供します。

1.3

ユーザーへの影響を最小限に抑えながら Web サイトをアップグレードする方法を理解します。一般的に言えば、バージョン管理システム (CVS、Subversion、Git など) とデータ バックアップ メカニズム (バックアップ) が必要です。

1.4

ユーザーにわかりにくいエラー メッセージが表示されないようにしてください。

1.5

ユーザーの電子メール アドレスを、少なくともプレーン テキストで直接表示しないでください。

1.6

ウェブサイトに適切な使用制限を設定し、しきい値を超えると自動的にサービスを停止します。 (これはウェブサイトのセキュリティにも関係します。)

1.7

Web ページのプログレッシブ エンハンスメントを実装する方法を理解します。

1.8

ユーザーが POST リクエストを送信すると、常に別の Web ページにリダイレクトされます

1.9

ウェブサイトのアクセシビリティ(障害を持つ人がどのように使用できるか)を忘れないでください。米国のサイトでは、これが法的な要件となる場合があります。 WAI-ARIAにはこれに関する優れた参考資料があります。

2. セキュリティ

2.1

ウェブサイトのセキュリティに関する包括的なガイダンスを提供するOWASP 開発者ガイドをお読みください。

2.2

SQL インジェクションとその防止方法について理解します。

2.3

ユーザーが送信したデータを決して信頼しないでください (Cookie もクライアントによって送信されます)。

2.4

ユーザーのパスワードはプレーンテキストで保存せず、ハッシュ形式で保存してください。

2.5

ユーザー認証システムに過度の自信を持たないでください。脆弱性に気付かないうちに簡単に侵害される可能性があります。

2.6

クレジットカードの処理方法を学びます。

2.7

ログインページや機密情報を扱うその他のページではSSL / HTTPSを使用します。

2.8

セッションハイジャックに対処する方法を知る。

2.9

クロスサイトスクリプティング (XSS) を回避します。

2.10

クロスサイトリクエストフォージェリ (XSRF) を回避します。

2.11

システムを最新バージョンに保つために、パッチをタイムリーに適用してください。

2.12

データベース接続情報が安全であることを確認してください。

2.13

使用しているプラ​​ットフォームの最新の攻撃手法とセキュリティの脆弱性を常に把握しておいてください。

2.14

Google のブラウザ セキュリティ ハンドブックをお読みください。

2.15

Web アプリケーション ハッカー ハンドブックを読んでください。

3. パフォーマンス

3.1

可能な場合は常にキャッシュを使用してください。 HTTP キャッシュHTML5 オフライン ストレージを正しく理解して使用します。

3.2

画像を最適化します。 20KB の画像ファイルを Web ページの繰り返し背景パターンとして使用しないでください。

3.3

gzip/deflate を使用してコンテンツを圧縮する方法を学びます ( deflate が推奨されます)。

3.4

複数のスタイルシート ファイルまたはスクリプト ファイルを 1 つのファイルに結合します。これにより、ブラウザーの http リクエストの数と、gzip 圧縮後のファイルの合計サイズを削減できます。

3.5

フロントエンドのパフォーマンスを改善するための優れたヒントが多数掲載されている Yahoo のExceptional Performanceサイトや、 YSlowツールをご覧ください。 Google のページ速度は、 Web ページのパフォーマンスを分析するために使用されるもう 1 つのツールです。どちらもFirebugをインストールする必要があります。

3.6

Web ページで多数の小さな画像 (ツールバーなど) を使用する場合は、 CSS Image Sprite を使用して HTTP リクエストの数を減らす必要があります。

3.7

トラフィック量の多い Web サイトでは、ドメイン間でコンポーネントを分割することを検討する必要があります。

3.8

静的コンテンツ(画像、CSS、JavaScript、Cookie に関連しないその他の Web コンテンツなど)は、Cookie の使用を必要としない別のドメインに配置する必要があります。ドメイン名の下に Cookie がある場合、クライアントがドメイン名に対して行う各 http リクエストに Cookie の内容が添付されるからです。ここでの良いアプローチは、コンテンツ配信ネットワーク (CDN) を使用することです。

3.9

ブラウザが Web ページをレンダリングするために必要な http リクエストの数を最小限に抑えます。

3.10

JavaScript ファイルを圧縮するには、Google のClosure Compilerを使用します。YUI Compressorも使用できます。

3.11

Web ページにこのファイルがまったく含まれていない場合でも、ブラウザは自動的にこのファイルを要求するため、Web サイトのルート ディレクトリに favicon.ico ファイルがあることを確認してください。したがって、このファイルが存在しない場合は、多くの 404 エラーが生成され、サーバーの帯域幅が消費されます。

4. 検索エンジン最適化(SEO)

4.1

example.com/index.php?page=45 の代わりに example.com/pages/45-article-title などの「検索エンジンに適した」URL を使用します。

4.2

「ここをクリック」ハイパーリンクは使用しないでください。SEO の機会を無駄にし、スクリーン リーダーの有効性が低下します。

4.3

XML サイトマップファイルを作成します。デフォルトの場所は通常、/sitemap.xml (つまり、Web サイトのルート ディレクトリに配置されます) です。

4.4

同じコンテンツを指す URL が複数ある場合は、Web ページ コードで<link rel="canonical" ... />を使用します。

4.5

Google のウェブマスター ツールと Yahoo のサイト エクスプローラーを使用します。

4.6

最初からGoogle Analytics (またはオープンソースのトラフィック分析ツールPiwik ) を使用してください。

4.7

robots.txtの役割と検索エンジン スパイダーの仕組みを理解します。

4.8

www.example.com へのリクエストを example.com にリダイレクトする(301 Moved Permanently リダイレクトを使用)、またはその逆を行うのは、Google がこれらを 2 つの Web サイトとして扱い、ランキングを個別に計算するのを防ぐためです。

4.9

悪意のある、または怪しいウェブスパイダーが存在することを認識してください。

4.10

ウェブサイトにテキスト以外のコンテンツ(ビデオ、オーディオなど)がある場合は、Google のサイトマップ拡張プロトコルを参照してください。

5. テクノロジー

5.1

HTTP プロトコルと、GET、POST、セッション、Cookie などの概念、および「ステートレス」の意味を理解します。

5.2

XHTML / HTMLおよびCSS がW3C 標準に準拠し、検証に合格することを確認してください。これにより、ページがブラウザの不具合を引き起こすことがなくなり、スクリーン リーダーや携帯電話で適切に動作するようになります。

5.3

ブラウザが JavaScript スクリプトを処理する方法を理解します。

5.4

Web ページ上の JavaScript ファイル、スタイル シート、その他のリソースがどのように読み込まれ、実行されるかを理解し、それらがページのパフォーマンスにどのように影響するかを検討します。場合によっては、スクリプト ファイルを Web ページの最後に配置することが適切な場合があります。

5.5

特に iframe を使用する予定の場合は、JavaScript サンドボックスの仕組みを理解してください。

5.6

JavaScript が利用できないか無効になっている場合があり、Ajax が必ずしも機能しない場合があることに注意してください。 「NoScript」は一部のユーザーの間で人気が高まっており、スクリプトのサポートはモバイル ブラウザによって大きく異なること、Google はほとんどのスクリプトを実行せずにページをインデックスすることを覚えておいてください。

5.7

301 リダイレクトと 302 リダイレクトの違いを理解します (これも SEO 関連の質問です)。

5.8

デプロイメント プラットフォームについてできる限り詳しく学習します。

5.9

スタイルシートのリセットの使用を検討してください。

5.10

ブラウザの違いを無視できる JavaScript フレームワーク ( jQueryMooToolsPrototypeなど) の使用を検討してください。

6. バグを解決する

6.1

プログラマーは時間の 20% をコーディングに費やし、80% の時間をメンテナンスに費やしていることを理解し、それに応じて時間を計画してください。

6.2

効果的なエラー報告メカニズムを確立します。

6.3

ユーザーがあなたに連絡して、提案や批判をすることができるチャネルやシステムをいくつか作成します。

6.4

将来のメンテナンス担当者や顧客サービス担当者向けに、システムの動作を明確に説明するドキュメントを作成します。

6.5

頻繁にバックアップしてください。 (そして、それらのバックアップが有効であることを確認してください。) バックアップ メカニズムに加えて、回復メカニズムも必要です。

6.6

SubversionGitなどの何らかのバージョン管理システムを使用してファイルを保存します。

6.7

ユニットテストを忘れないでください。Seleniumなどのフレームワークが役立ちます。

(以上)

<<:  iframe パラメータの説明と例

>>:  プレフィックスケースを削除する Nginx リバース プロキシ構成のチュートリアル

推薦する

MySQL ユーザー権限管理の分析例

この記事では、MySQL ユーザー権限管理の例について説明します。ご参考までに、詳細は以下の通りです...

Windows での PyTorch 開発環境のインストール チュートリアル

アナコンダのインストールAnaconda は、Python の使用を容易にするために作成されたソフト...

共有サイドバーを実装するためのネイティブJS

この記事では、ネイティブ JS で実装された共有サイドバーを紹介します。効果は次のとおりです。 以下...

Node.js における path.join() の利点の分析

文字列連結ではなく path.join() メソッドを使用する必要があるのはなぜか疑問に思うかもしれ...

フロントエンド開発に必須:推奨されるブラウザ互換性テストツール 12 選

フロントエンド開発者にとって、さまざまな主要ブラウザのさまざまなバージョンでコードが適切に動作するこ...

MySql インポート CSV ファイルまたはタブ区切りファイル

別のライブラリから別のライブラリにデータをインポートする必要がある場合があり、このデータは CSV ...

Dockerコンテナの原理の分析

目次01 コンテナの本質とは何か? 02 Cgroupテクノロジーと名前空間テクノロジーの概要03 ...

MySQLのネストされたトランザクションで発生する問題

MySQL はネストされたトランザクションをサポートしていますが、それを実行する人は多くありません....

Linux サーバー上のローカル静的リソースにアクセスするために nginx を使用する方法

1. ポート 80 が占有されているかどうかを確認します。通常、ポート 80 は Apache サー...

JavaScript の BigIn 関数の共通プロパティをまとめます

目次1. 概要2. 属性1. 数学演算子2. 比較演算子3. ブール演算結論1. 概要BigInt ...

ubuntu16.04でNFSサービスを構築する方法

NFS の紹介NFS (ネットワーク ファイル システム) は、FreeBSD でサポートされている...

Linux での umask の使用に関する詳細な説明

私は最近 Linux を学び始めました。Ma Ge の umask に関する Linux コースを読...

Linux でシェル スクリプトを使用して jar パッケージ プロジェクトを展開するための完全な手順

1. JDKをインストールする コンピュータの動作桁を確認します。 uname -ar 2017 x...

JavaScript はスローモーションアニメーションのカプセル化と使用法を説明します

プロセス分析の実装(1)繰り返して電話をかけるには?答え: 関数をカプセル化して一度だけ呼び出すコー...

Dockerを使用してOracle_11gをインストールする方法

DockerでOracle_11gをインストールする1. oracle_11gイメージを取得する d...