プロが教える店舗&オフィスのセキュリティ対策術

jQueryやprototypeなどのJavaScriptライブラリを使用して、ホームページに色々な効果をつけています。
その1つで、ナビゲーション箇所に「アコーディオンメニュー」を実装したのですが、ページ遷移する度に読み込みが遅いためか、メニューが全部展開(開いた)状態になってしまいます。
その後3秒~5秒ほどでアコーディオンが閉じた状態になります。
不恰好で困っています。
トップページなど入り口のページはあきらめるとして、他のページに遷移したときは、上記の「メニューが展開する」状態を回避する策はないでしょうか?
jquery.js
accordion.js
というようにサイトのすべてのページに読み込みをしています。

JavaScriptについては「外部ファイルにするとキャッシュが残る」というように聞いたことがありますが、それは一度閲覧したサイトを次回、訪れた際にキャッシュが残っているということでしょうか?
それともトップページで一度読み込みをすれば、他のページに遷移したときにトップページで既に読み込みをしたjsファイルがキャッシュされており、引き継がれる(再読み込みをしない)、ということでしょうか?

「アコーディオンがいちいち展開する」ことから、初めて訪れるページは、トップページでもサブページでも、同じjsファイルにもかかわらずいちいち読み込みいくということなのかな・・・と思っているのですが。

JavaScript、JavaScriptライブラリを混同しているような内容で、的はずれな質問をしてしまっているのかもしれませんが、当方、あまり知識を持ち合わせておらず、どうぞご容赦ください。

A 回答 (2件)

>それは一度閲覧したサイトを次回、訪れた際にキャッシュが残っているということでしょうか?



その通りです。
jsファイルも基本的にはキャッシュに残り、次回同じサイトに訪れた場合はサーバから取得はされません。
※ httpヘッダやブラウザの設定によって異なります。

アコーディオンメニューとは何やらすごそうですね。
私自身は「アコーディオンメニュー」とやらは使ったことないのでよく知りませんが
画面表示時に「アコーディオンがいちいち展開する」というのは
単純にアコーディオンメニューとやらに変換する処理が重いのだと思います。
※ それにしても3~5秒はちょっとかかりすぎな気がしますが‥。

処理が重いことが原因なのであれば、初期表示ではメニュー部分を(divタグなどで囲って)非表示にしておき、
アコーディオンメニューの処理が終わった時点でメニュー部分を表示すればよい(例えばonloadイベントハンドラの最後にもっていくなど)かと思います。
    • good
    • 0

#1です。



文章を読み直して一部誤解を与えそうな文章を訂正します。

誤)例えばonloadイベントハンドラの最後にもっていくなど

正)例えばonloadイベントハンドラの最後にメニューの表示処理を追加するなど

失礼しました。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!