web-dev-qa-db-ja.com

Webサイト全体をAJAX化しないのはなぜですか?

各部分の主要部分をロードするajax機能を使用してサイトを開発する必要がない理由について、確固たる理由はありますか(ヘッダー、ナビゲーションなどの要素は同じままであると仮定)。

サーバーはすべてのページに表示されるコンテンツを提供する必要がなく、ホストとエンドユーザーの両方にメリットがあるため、リソースの消費量は少なくなります。

考慮に入れて質問に答えてください。

  • サイトのjavascriptの動作は、すべてのインスタンスで適切に低下します

  • 私の質問では、この動作をオフから実装できる新しいサイトについて話しているので、技術的にはお金がかかりません-実装するために完成品に戻ることはありません。

11
Anonymous

JavaScriptを有効にせずにコンテンツにアクセスできる場合、質問は意味がありません。他の方法でコンテンツにアクセスできる場合は、「完全にAjaxified」ではありません。本当に、あなたが求めているのは、「Ajaxを通じてユーザーのエクスペリエンスを向上させてもいいですか?」です。答えは明らかに「はい」です。

編集

Googleがクロール可能なAjaxの提案を出したとき、それは 本当に悪いアイデア としてパンされました。興味深い読み物になります。

6
John Conde

まず最初に

プロ

  • AJAXを使用すると、共通の「ベース」ページを使用してコンテンツ領域をロードするだけで済み、ページの大部分がすでにロードされているため、ユーザーのロード時間を短縮できます。
  • コンテンツ領域をフェードインおよびフェードアウトするなど、いくつかの見た目を許可することができます。

短所

  • ページがダウンロードされた場合、ニースを再生しません。
  • 障害のあるデバイスを台無しにすることができます。
  • JavaScriptをオフにした視聴者は、非JavaScriptバージョンも使用しない限り、コンテンツをまったく使用できません。
  • さらに多くの作業(本当に言う必要がありますか?)。

あなたの質問に今

Javascriptを使用していないサイトのサイトが正常に低下すると仮定した場合、それがどれだけうまく機能するかは、その実行方法によって異なります。たとえば、javascript以外のバージョンへのリンクを青色で表示するだけの場合、それらの視聴者が別のリンクをクリックする必要があるのは不便です。一方、従来のリンクを使用するnoscriptの「メインページ」がある場合、ほとんどのユーザーにとってはうまく機能しますが、障害デバイスを使用するユーザーのサポートはまだありません。ユーザーが特定の「ページ」リンクなど.

全体として、ますます高速なWeb接続の世界では、少量のファイルサイズをカットオフすることは実際には正当化されません(すべてのJavascript自体、CSS、および画像はキャッシュされる可能性があり、キャッシュされるため、バイトを節約するための「ベース」ページ自体)、それが与える可能性のある短所、つまり余分な難しさ(それは常に短所ではありません-チャレンジは良いことです)および一部のユーザーに提供できるサポートの欠如。

全体として、それはあなた次第だと思います、おそらくかなりうまくいくでしょうし、大多数のユーザーにとって、彼らはおそらくサイトを意図したとおりに見るでしょうが、個人的には、私は言わないと思います面倒なことは、ファイルサイズをこのようにわずかに改善するだけでも面倒なことではないからです。

4
Mike

http://gawker.com/ をチェックしてください-このサイトは事実上ほぼ完全にロードされます。それらは「ハッシュバン」(http://mydomain.com/#!some_section)を使用して、どのコンテンツページをロードするかを決定します。メインナビゲーションは静的なままです。

http://mtrpcic.net/2011/02/fragment-uris-theyre-not-as-bad-as-you-think-really/ Gawkerが使用する概念に関する短いチュートリアルをご覧ください。

長所と短所があります。検索エンジン( http://code.google.com/web/ajaxcrawling/docs/getting-started.html を参照)、javascriptが無効になっている人、および多くのテストを行います。

とはいえ、それらに対する最大の議論は、おそらくユーザーがページのロードを待ってから、さらにロードするのを待たなければならない場合、せっかちになる可能性があるということです。私の見解では、ベストプラクティスは、メインサイト、ナビゲーション、およびプライマリコンテンツを1回のパスで(要求に応じて)ロードし、重要でない付随物のAJAXを保存することです。これは、 プログレッシブエンハンスメント というアイデアで機能し、両方のアプローチの長所を組み合わせています。

3
Chris

おそらく必要ないからです。
基本的なHTMLドキュメントの読み込みは簡単で、機能します。 Ajaxを導入すると、ブラウザー、コード、およびJavascriptのメンテナンス、バックエンドのもの、奇妙なハッシュバンURLなどのためのプロセスのレイヤー全体が追加されます。これは正当化できる場合もあれば、そうでない場合もあります。それはあなたにいくらかのサーバーリソースを節約するかもしれません(かもしれません)、しかしそれは維持費を相殺するのに十分でしょうか?そのプロジェクトごとに評価する必要があります。

例として、Twitterが最新の再設計を行ったとき、彼らはそれが単なるWeb(ページ)サイトではなくアプリケーションであり、そのほとんどがAjaxベースであるというアプローチを取りました。通常のページ要求で処理されます。 Ajaxの何かが失敗したためにそこに到着し、空白のページで迎えられることは、今でもまだ発生している最大の問題の1つです。

1
Su'

実際には、特に非常に複雑な主要なWebサイトの場合、「完全にAJAX」のWebサイトを作成するための多くの作業があります。これを試みるウェブサイトにはGoogleとFacebookがありますが、それでも完全にはしていません。

一般的な問題は、ナビゲーション(つまり、前後)、およびブックマークですが、多くの開発者が対処する必要のない他の多くのバグがあります。また、基本的には、Javascriptと非javascriptのユーザーと互換性のある2つのバージョンのWebサイトを作成することを意味します(AJAXのサポートが不十分なすべてのブラウザーを修正します)。

0
Matt

はい、そうである必要がありますが、逆の場合もあります。

ページの一般的な部分はHTTP経由で送信する必要があります。その後、小さなajax(またはさらに優れたwebsockets)コントロールが動的コンテンツを非同期に読み込みます。

もちろん、最初にJavaScriptが(Cookieによって)有効になっているかどうかを検出し、有効になっている場合にのみこのメソッドを使用する必要があります。

そのため、通常の完全なHTTPルートと、WebSocketsルートが必要です。 node.jsのようなツールを使用しない限り、コードの複製が必要です

ほとんどの人は、余分な労力をかけるだけの価値はないと考えています。そして時々そうではありません。

余談ですが、多くの人がページを間違ってajaxifyしています。実際、彼らはあなたが非javascriptバージョンを必要とせず、これらすべての奇妙なハッシュバンURLと壊れた進む/戻るボタンが必要だと判断します。 ajaxを適切に実行するには、HTML5履歴が必要です(IE9にはありません)。また、開発者がWebサイトのバージョンを完成する必要があります。

0
Raynos

ページにajax要素を配置することは、ユーザー数が少ない場合は問題ありませんが、トラフィックが多い場合は問題ありません。より静的なアプローチを使用して、リソースの乱用を減らしたい場合。

たとえば、200人のユーザーが1秒間に1つのページにアクセスしようとしているとします。 ajax呼び出しには約7つのデータベースクエリがあります。つまり、1400のデータベースが1秒を呼び出すため、Webサイトが動かなくなる可能性があります。

より高いトラフィックのために設計する必要があるWebサイトには、静的な方法で表示できるコンテンツのために、静的な外向きのページが必要です。これは、エンドユーザー用に取得される静的ページを毎秒実行するサーバー側スクリプトを使用することで実現されます。したがって、1400のデータベース呼び出しを1秒から7に減らすことができます。

SOA ウェブサイト構築へのアプローチです。

0
Paul

Javascriptが無効になっている訪問者にとっては格段に低下すると述べているため、実際に発生する可能性のある問題は2つ(および考えられる1つの問題)だけです。

アクセシビリティが悪い

スクリーンリーダーやその他の支援技術は、動的なDOMの変更によってしばしば捨てられます。彼らはページを線形に処理および読み取ります。また、ページのロード後にページのコンテンツを変更すると、正しく処理されない場合があります。

これを回避するためのテクニックはあるかもしれませんが、私はそれをあまり徹底的に検討していません。

複雑さの増加

この種のサイトを維持するのは難しいかもしれません。たとえば、新しいレイアウトを作成し、AJAXリンクに置き換えるコンテンツ領域のIDを変更した場合、ナビゲーションスキームが非常に困惑する可能性があります。

この種類のAJAX動作は、実行しているトラフィック分析を複雑にします。 Googleアナリティクスは、これらのAJAXロードをpageTracker._trackPageview('this_page');への手動呼び出しなしでは正しく登録しませんでした。

ページの操作方法をさらに複雑にすると、新しい開発者にとっての水準も上がります。サイトで作業している人は、おそらく、この動作がページの読み込みにどのように影響するかを知っておく必要があります。

可能:最初の訪問時のページ読み込みが遅い

物事の構造に応じて、AJAXコードをフェッチするこのページは、ドキュメントが完全にロードされた後にのみ起動できます。したがって、訪問者がページ全体をダウンロードしてから、Javascript(外部ファイルの場合)、およびブラウザーがそれをレンダリングし、AJAXを介してコンテンツを取得した後にのみ、ページコンテンツが表示されます。

後続のリンクをクリックするたびに速くなりますが、ユーザーが最初にアクセスしたページの取得には、実際には静的バージョンよりも時間がかかります。

これを考えられる問題とラベル付けした理由は、最初のページを常に静的に送信し(静的バージョンは既にフォールバックとして存在するため)、その後のリンクにAJAXを使用できるからです。


それは価値があることですが、これは私にとって恐ろしいアイデアのように聞こえません-特にモバイルページのような帯域幅に敏感な使用のために。ただし、あなたのケースでそれが価値があることを確認するために、欠点を慎重に検討する必要があります。

0
Jacob Hume