質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.47%
ウェブアプリケーション

ウェブアプリケーションとは、ウェブ上でアクセスされるアプリケーションのことを呼びます。この場合におけるウェブとは、インターネットやイントラネット上を意味します。

ウェブブラウザ

ウェブブラウザ(インターネットブラウザ)とは、www上に公開されている情報リソースをユーザーに視覚的提供・操作させる機能を持ったソフトウェアプログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

意見交換

クローズ

6回答

667閲覧

ETag script を再発火させない方法はあるか

akiyama3284pga

総合スコア186

ウェブアプリケーション

ウェブアプリケーションとは、ウェブ上でアクセスされるアプリケーションのことを呼びます。この場合におけるウェブとは、インターネットやイントラネット上を意味します。

ウェブブラウザ

ウェブブラウザ(インターネットブラウザ)とは、www上に公開されている情報リソースをユーザーに視覚的提供・操作させる機能を持ったソフトウェアプログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

HTML

HTMLとは、ウェブ上の文書を記述・作成するためのマークアップ言語のことです。文章の中に記述することで、文書の論理構造などを設定することができます。ハイパーリンクを設定できるハイパーテキストであり、画像・リスト・表などのデータファイルをリンクする情報に結びつけて情報を整理します。現在あるネットワーク上のほとんどのウェブページはHTMLで作成されています。

0グッド

0クリップ

投稿2023/07/09 04:04

編集2023/07/09 04:07

0

0

テーマ、知りたいこと

ETagを使用した際、ハッシュ値がマッチし、サーバから status_code = 304 し、ブラウザのキャッシュを使用させる際、
javascriptフェーズを再起動させない方法はありますでしょうか?

背景、状況

web上の業務システムにおいて、有効に働きそうなETagという仕組みを使用してみたのですが、
確かにbody分の帯域は節約できるものの(検証のためにサーバの一連の比較用レスポンス作成の処理は避けられないのは仕方ないとして)
ブラウザのscriptフェーズは再起動するため、重いjsが絡むエリアにおいて感覚的に大きな速度改善は
みられませんでした。

もし、scriptフェーズまでスキップしたものを単にキャッシュさせて、304が来た際に単にそれ(完成済みのhtml)を出すだけにする、
ような設定ができたら、かなりの速度改善が期待できるのですが...

確かにscriptを再起動しなければ、例えば現在時刻を表示するような処理を書いていた場合、古いものになってしまうわけなのですが、
そういった処理が無いエリアでは、この再起動は無駄になるように思いますので、明示的にオフにできたらと考えております。

ご意見、ご指摘等賜れましたら助かります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

回答6

#1

maisumakun

総合スコア145184

投稿2023/07/10 00:41

「動作を止める」という方法はないので、逆にbarba.jsのような、「JavaScriptでページ遷移を乗っ取って制御する」ライブラリを使うのがいいかと思います。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#2

akiyama3284pga

総合スコア186

投稿2023/07/10 02:14

編集2023/07/10 02:27

#1
お世話になっております。
非常に魅力的なライブラリで、使いたいと思ったのですが、乗り越える必要のある障壁が高く、現システムでそれように修正するコストが非常に高いため、見送ることにいたしました...

代替案としまして、 eTag と rel="prerender" を組み合わせることでサーバへの負担を最小限にしつつ、
上手く遷移先を予測して、即座に完成済みのhtml(script済)を提供できないかと考えております。

キャッシュが無い時には 全エリアをrel="prefetch" でキャッシュさせ(キャッシュ中は待機させる)、
キャッシュが揃っていれば、全エリアをrel="prerender" する。
初回は各エリア毎のフルレスポンスをサーバは返す必要がありますが、キャッシュができる2回目以降は
302ステータスの小さなレスポンスを全エリア分返し、ブラウザは各エリアのレスを取り出す。
データ変更があるエリアについては、再度フルレスポンスが必要

のように考えております。
かなり力技のような具合なのですが...

(流石に全エリアは負担が大きすぎるため、利用頻度データを基に対象を絞ったりする機構も必要かと思います。)

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#3

maisumakun

総合スコア145184

投稿2023/07/10 02:42

302ステータスの小さなレスポンスを全エリア分返し、ブラウザは各エリアのレスを取り出す。

このような処理を行うには、(iframeだらけのページを作るのでもなければ)それ相応のJavaScriptコードが必要です。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#4

akiyama3284pga

総合スコア186

投稿2023/07/10 03:18

#3
ありがとうございます。
幸い業務システムのため、各スタッフにある程度の前知識と指示をすることができるため、
例えばよく使う重いエリアを3件くらずつ登録して貰い、

$("body").append( <link rel="prefetch" href="1:当日日誌" />     <link rel="prefetch" href="2:当月カレンダ" />    <link rel="prefetch" href="3:当日調整" /> `)

のようにしてみようかと思います。
短絡的ですが、使用機器の性能等にも依存しそうなので、すこしずつ様子を見つつ改善なども考えてみたいです。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#5

maisumakun

総合スコア145184

投稿2023/07/10 04:21

のようにしてみようかと思います。

その後はどうするのでしょうか?

ブラウザへの表示処理にもJavaScriptを活用しなければ、選択肢は「ページ全部を再構築」しかありません。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

#6

akiyama3284pga

総合スコア186

投稿2023/07/10 05:47

#5
ありがとうございます。
今になって気が付きました。おっしゃります通り、この方法でもscriptフェーズはスキップされませんでした。
ただ、eTag単体の場合にはサーバ側のハッシュ値作成の処理が走りますが、prefetchにより秘密裏にその時間を消化できるため、その分速度が改善されました。

正直この時間だけでもが大きなロスだったため、これだけでも大きな改善となりました。
ですが、本題のscriptを止めるという点での解決には至っておりません。

barba.jsの動作原理を確認し、自身のシステムでうまい具合に応用できる部分など、模索してみたいと思います。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

最新の回答から1ヶ月経過したため この意見交換はクローズされました

意見をやりとりしたい話題がある場合は質問してみましょう!

質問する

関連した質問