Webページを作成してるのですが、Twitterの埋め込みをいれると読み込みが遅い時があります。
最初にローディング画面を表示するようにして、一秒後ぐらいにWebページが表示されますが、十数回に一度ぐらいの割合でローディング画面がかなり長くなってしまう時がある。
試みてみた事:
・twitterのソースコード(下記)部分に 「async」(非同期通信)を削除する
→あまり効果を実感できず
<a class="twitter-timeline" data-width="250" data-height="350" href="https://twitter.com/isekaiizakaya?ref_src=twsrc% … by isekaiizakaya</a>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></scr
・addEventListenerのイベントをload→domcontentloadedに変更
→早くなるが反対に遅延があった時しかLoading画面が表示されなくなる(画像やスタイルシートを待たずに発生する)
window.addEventListener('domcontentloaded', function(){
document.getElementById('gif').classList.add('loaded');
});
・試しにTwitterの埋め込み部分を削除してみる
→30数回程行ったが遅くなることはなかった
(Twitter埋め込み以外に外部リンクが2つあった状態で行ったが遅延は起きなかった。
また、逆にTwitter埋め込みのみの状態を行ったが、遅延は起きた)
Twitterの埋め込みがある状態で遅延が起きなくなる方法がありましたら、
教えて頂きたくお願い致します。
全体ソースコード(一部のみ 抜粋);
HTML:
<div id="gif"></div>
<div id="id3_top" clss="twitter_page">
<a class="twitter-timeline" data-width="250" data-height="350" href="https://twitter.com/isekaiizakaya?ref_src=twsrc% … by isekaiizakaya</a>
<script async src="https://platform.twitter.com/widgets.js" charset="utf-8"></script>
</div>
<div id="id4_top" class="banner">
<a href="https://www.aist.go.jp/"><img src=images/top_bnr_univ_shindan.png class="link_banner"></a>
</div>
<div id="id5_top" class="banner">
<a href="https://seiga.nicovideo.jp/seiga/im9619637"><img src=images/9619637i.jpg class="link_banner"></a>
</div>
___________________________________________
CSS:
#gif {
position: fixed;
z-index: 1;
top: 0;
right: 0;
bottom: 0;
left: 0;
transition: all 2s ease;
background: url(../images/https___arisago.com_official_wp-content_uploads_2017_08_005.gif) center/300px no-repeat, #080403;
}
.loaded {
opacity: 0;
visibility: hidden;
}
______________________________________________________________________
Javascript:
window.addEventListener('load', function(){
document.getElementById('gif').classList.add('loaded');
});
No.2ベストアンサー
- 回答日時:
No1です。
お尋ねの実際の構成がどうなっているのかわからないので、推測での回答でしかありません。(…ので、当たっているのかもわかりません)
想像するところ、
><a class="twitter-timeline" ~~~</a>
で、設定ししているURLの内容を、
><script async src=~~~></script>
のスクリプトからajaxで読み込んでいるのではないでしょうか??
(私の環境では両方ともアクセスできないので、他の部分で読み込んでいるのかも知れませんが、質問者様にはわかっているはず)
No1の回答は、スクリプト(=多分ajax)の処理が行われているために、htmlの解析完了が遅れているものかと想像しました。
(一応、asyncとなっているので、ページ読み込みとは別に実行されるはずなのですが、内容が不明なのではっきりしないのと、ご質問文のテストの内容から推測すると、そこが怪しそうなので)
ですので、確実にload後に(=ローディング画面を表示したいのであれば、それを外してから)、読み込みのスクリプトを実行するように順序を明確にすれば、先に、htmlの内容が表示されるはずと推測しました。
ただし、twiterの表示予定部分だけは空白状態になってしまうので、後から内容が表示されたときに、レイアウトが動かないようにあらかじめサイズを確保しておくほうが良いという意味です。(幸い、サイズ指定がありそうな雰囲気ですので)
イメージ的には、以下のページで、2回目以降に「もっと見る」を押したときのような感じかな。(あまり良い例ではなくて申し訳ありませんが)
https://www.tipdip.jp/demo/showmore_json/
要は、一旦、表示された内容はそのままにしておいて、ページの一部分だけ後から読み込むという感じです。
(上例のページでは、「一部に挿入」ではなくて「後ろに追加」になっていますけれど…)
おまけ
>30数回ほど~に関しては、単純にWebページ更新ボタンを押して
>何度も試しているだけです。
1回目のテストはテストになりますが、「通信関連を削除した」状態では、画像等はキャッシュされてしまっているので、2回目以降はそちらが利用されて表示速度は速くなるため、ほとんど速度のテストにはならないという意味です。
No.1
- 回答日時:
こんにちは
私の環境ではスクリプトを見られないので、どのような内容かはわかりませんが、想像するところ非同期で一定の項目を絞り込むなりして読み込んでいるのではないかと仮定しました。
もしも、それを除いても、ローディング画面が必要なほどに遅いようであるなら、今時の環境下ではちと信じられません。
(よほど重たい画像を読み込んでいるとか、他にも非同期通信があるとか…)
画像が原因であるなら、まず画像を「表示に適切な解像度」にして表示用としておいたほうが宜しいでしょう。
解像度が高い(重たい)ものが必要な場合には、表示用とは別に用意しておけば良いのですから。
勝手に想像するところ、非同期通信を除いてしまえば、そもそもローディング画面など必要なくなるのではないかと思います。
>Twitterの埋め込みがある状態で遅延が起きなくなる方法が
>ありましたら、教えて頂きたくお願い致します。
ひとまず、非同期通信がご質問の部分のみとして回答します。
当該部分の表示サイズは固定のようなので、先にスペースだけ確保して(レイアウトの為)全体を表示させ、HTMLのload後に非同期通信を開始するようにしておけば良いのではないでしょうか?
(現状では、多分、HTML読み込み時に併せて非同期通信を行っている)
このようにすることで、ページ全体は先に表示されることになるはずです。
非同期通信の部分は、表示までに時間がかかるかも知れませんけれど、ページ全体から見れば一部分のはずと思いますので。
必要であれば、非同期通信の結果表示の部分だけに「ローディング表示」をしておいて、結果を受け取ったら消すようにしておけば良いのではないでしょうか?
ついでながら・・・
>→30数回程行ったが遅くなることはなかった
毎回キャッシュをクリアするなどしてから試さないと、あまり意味が無いと思いますけれど、どのようにテストなさったのでしょうね?
(あるいはタイムスタンプ付きのURLにしておくとか)
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/30 09:10
- HTML・CSS 書籍を見つつサイト造りの練習をしているのですが、見た目が一致しません 2 2022/11/28 15:00
- JavaScript jqueryを使ったスムーススクロールのコードを書いたのですが、HTMLコード内にある、a butt 2 2022/04/14 10:59
- HTML・CSS スクロールすると追従する画像のコードを書いているのですが、追従する画像の大きさの調節が上手くいきませ 2 2022/04/18 12:52
- HTML・CSS CSSのホバーエフェクト 1 2023/06/19 06:53
- HTML・CSS ヘッダーの画像にメインエリアがかぶってしまいます 1 2022/11/28 14:06
- HTML・CSS CSSが効かずどのように指定すれば良いか分からないのでアドバイスお願い致します 2 2023/06/07 12:25
- JavaScript vertical sliderをautoplayしたい 2 2022/08/25 14:47
- JavaScript jQueryでのドラッグアンドドロップについて 1 2022/07/07 21:04
- HTML・CSS PCサイズで赤い画像2つと、青い画像2つがそれぞれ横に2つずつ並んでいるのですが、これをスマホサイズ 5 2022/04/11 12:01
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
画像の上に画像リンクを貼る方法
-
スライダーを実装した場合、ペ...
-
画面の表示位置を指定させて表...
-
オンマウスで、画像切り替え+...
-
残像を残しながらjpg画像を自動...
-
JAVASCRIPTでアクセス毎に画像...
-
画像クリック→メッセージボック...
-
「画像の上を流れる文字列」を...
-
小窓について教えて下さい。
-
MAX関数を使ってからLEFT JOIN...
-
htmlの記述で link rel=styles...
-
背景色を一定時間ごとにランダ...
-
文字を固定したいのですが…
-
javascriptでURLにマウスオーバー
-
[急ぎ] videoタグで埋め込んだm...
-
文字と数字が混在する要素のsor...
-
離れた場所にマウスオーバーで...
-
ホームページビルダー15 メニュ...
-
c++std::string型をTCHARに変換...
-
タブで開いてさらにタブ内をア...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
textareaに画像を表示したい
-
JavaScript スライドの画像にリ...
-
1枚の画像をクリックして複数の...
-
HTMLで条件分岐はできますか?
-
Javascript で共通の処理をどこ...
-
Gifアニメ、最後のコマに行った...
-
JavaScriptとチェックボックス...
-
画像の重なりの順序を代える方...
-
画像ランダム表示、しかしダブ...
-
javascriptで毎月替わる画像
-
1枚の画像をクリックすると複数...
-
オンマウスで、画像切り替え+...
-
透過pngの透明部分以外をクリッ...
-
Javascriptで指定した日付と時...
-
jQueryスライドショー画像への...
-
JavaScript で flexslider の画...
-
lightbox2をiframeから外に表示...
-
重なった画像にクリックイベン...
-
Twitterの埋め込みしたWebペー...
-
画像をフォルダに入れれば表示...
おすすめ情報
回答ありがとうございます。
非同期通信ですか。
試してみた内容の一つですね。
あまり、効果が実感できなかったのでよくわかりませんでした。
「async」の部分を削除するやり方とはまた別の方法でしょうか。
確かに非同期通信にすれば、ローディング画面は必要ないですが、
あえてローディング画面をつけているのは、Webページ作成の練習としてです。
なので、ローディング画面があった状態でTwitterの埋め込み時間短縮を模索していました。
30数回ほど~に関しては、単純にWebページ更新ボタンを押して何度も試しているだけです。
また、下記以降の内容を理解しきれていませんのでもしよろしければ後学の為に教えて頂けないでしょうか。
宜しくお願い致します。
>→ひとまず、非同期通信がご質問の部分のみとして回答します。
~~
結果を受け取ったら消すようにしておけば良いのではないでしょうか?