サーバ上の org のアイコンを解決し、オリジンをプレコネクト
Lighthouse は、300 ms の接続されていない起源として theme.kamocrm.com という名前の また、接続前のオリジンを報告し、最後のラウンドで、階段として読みました スタイルシートについて苦情を申し立てました。 ではなかった。 その起源は あらゆる負荷でまだ接触 — DynamicMetaLo...
3つのルートバンドルをホームページに優先して停止
Lighthouse の 103 KiB の "未使用 JavaScript" は 4 つのチャンク、それら 2 つの名前 基本的に100%未使用。 それらはホームページのHTMLに表示されません。 他のルートのコードは、 nav と footer から <Link> の prefetch によって引き下げられる これ...
背景幅を名前付け、サーバーのテーマコンフィグを読み込みます
二つの発見は、そのコードが言ったもの以外の何かをやっていた。 1920年 CANDIDATEをフェッチするバックロップ。 149 KB、装飾的な写真 "sizes="(最大幅:768px)50vw、100vw"の412pxの携帯電話でコンテンツの背後にある" そう言っているところ右に座る。 原因は私が自分自身2を追加...
画像をハードに圧縮し、カードをまだ保持し、重複リクエストをドロップ
イメージ ページ上のすべての品質設定はステップダウンし、許可リスト next.config.ts は [30, 50] なので、もっと静かに尋ねることはできません。 ヒーローの背景 (LCP) 40 → 30 21,959 → 6,635 バイト(750px rung) セクション背景 75 → 50 ヒーローのビデ...
ヒーローを分割し、最後の2つのライブラリをページから外します
ステップC. GSAPまたはFramer Motionは、任意のホームページ上にあり、 `home` メッセージ名空間はブラウザに送信されなくなりました。 JS 241,999 -> 214,135 gzip (15 チャンク → 13) ドキュメント 53,877 -> 51,797 gzip GSAP は戻り値...
7つのセクションは水和を停止します
ステップB. TrustBar、WhatReplaceWhat、HowItWorks、UseCases、特徴、CTAStripおよび 価格はサーバーコンポーネントです。 HTML にレンダリングし、JavaScript を出荷しません。 クライアントに保管していた唯一のことは、分析でした。 1 つない 7 人の状態、...
ホームページを完全にオフにアニメーションランタイムを取る
水分補給作業のステップA。 Framer Motionはホームページのエイジャーからなくなっています 束: 798,723 -> 687,593 バイト生, 245,367 → 209,422 gzip. つまり 35,945 ワイヤー上の少数のバイト、測定によってなされる36,444の予測に対して 事前にチャンクしま...
ヒーローがペイントできる前の8つのオフスクリーンセクションをレンダリングを停止する
LCP は 4.4 s で、そのブレイクダウンは 120 ms から 1 バイト、290 ms まで 負荷遅延、390 ms は実際に画像をダウンロードします — そして 1,810 ms の 「エレメント遅延」 写真は到着を終わらせ、単にできませんでした 塗装される。 ホームページは1,482 DOM要素を、閾値灯台...
ブロック時間の380msを要し、電話を静かにする2つの変更をしないで下さい
最後の2ラウンドは87から67までのスコアを取った。 総ブロック 出発時間 80 ms から 460 ms および LCP への 3.9 s から 4.4 s。 自分の変更の2つが、 両方とも同じ悪い理由で作られました。 その理由は、実際のレッスンなので、まず最初に述べる価値があります。 そのレポートの「Insigh...
見出しをコンポジターに移動し、チャットウィジェットがオフロード
最後のラウンドから残っている2つのこと、両方はではなく、行っているので 各取引は何か。 今、それらをやる。 ヘッドラインのライトパス。 型ブロックの2番目の背景層でした。 `background-position` — ペイントプロパティーをアニメーション化することで、全てのフレームがラン ページの LCP 要素のメ...
スタイルシートをインライン化し、ポリフィルを落とすことはできません
2つのLighthouseの調査結果、両方が最後のラウンド後に開いたままだったので 対処できないと結論づけました。 彼らがいた; 私は硬く見えなかった 十分。 RENDER-BLOCKING REQUESTS (560 ms) の口コミを投稿します。 スタイルシートは、唯一のブロックリクエストでした ドキュメントの後...
水分補給後、未サイズの背景の1.8MBを出荷停止
ThemedBackgroundはホームページに残っている最も高価なものでした。 バグのように見えました。 テーマの Bucket で <img> を直接レンダリングするので、 ブラウザは非接触のソースファイル — 606, 646, 585 KB, WebP, で 完全な解像度、電話で。 AVIFは、それらをサイズ変...
水分補給を待ち受ける折り目を止め、ロードウィンドウをクリア
当ホームページは、全角の見えないものを出荷しました。 フレーム モーション シリアライズ `initial` は、先頭の HTML をインラインスタイルとしてプロップするので、マークアップ <h1>、コピー列、リール絞り、フルブルド `opacity: 0` のすべての背景 — と、React が持っていたまでその方法...
テーブルの開始に戻るのではなく1つの候補ブロックを参照
/api/send は 1.8-7.9 s で、ほとんどのアドレスと 1 桁の ms を数回取得しました。 ロード問題ではなく、ジオライトクエリの形状です。 getLocation() は イベントが書かれている前に待っていたので、ブラウザでレイテンシーが支払われました すべての追跡されたイベント、およびマーケティング...
すべてのリンクをハイジャックする分析トラッカーを停止しますが、ホーム
ホームページ以外のページは秒単位で開き、理由は決してなかった このアプリのナビゲーションパス:サーバーのプレンダー、ペイロードは 完全な(78チャンクの refs、~57 KB、68 ms)、すべての内部のhref は locale-aware です <Link> および展開されたプローブは、ホームページにソフトナビゲ...
サイト全体の読み込み境界をドロップするだけで、2次ページのみが支払われる
各ページは、ホームページ以外は遅く感じ、直進(ページ) サブツリー — 私はそこに置いた何かで。 4fae924が(ページ)/loading.tsxをそれぞれ追加したとき 経路は動的で、ダイナミックな経路では、次の優先順位はもうありません 読み込まれる境界が最も近いので、そのファイルが読み込まれる: <Link> なし...
変更履歴のカウントをプレンダーし、訪問ではなく公開時に更新します
訪問者全員がこの番号を自分で取得しました。 プレビューバンナーは共有に住んでいます レイアウトは、水和後/api/changelog/todayに当たるすべてのページで待ってから、 回答に合致し、ページをシフトしました。 そのルートをキャッシュ (d3de447) スペアリング バックエンドがリクエストを左折し、待ち時...
ページのメガバイトを優先し、無料でバックエンドを呼び出しを停止する
各ページに支払われた2つの費用は、レポーターの所有物に従うことによって見つけられる両方 i18n についてハンチし、必要のないバックエンド呼び出し。 PREFETCH VOLUME — 4fae924からの回帰。 ルートが優先される前に、 <Link> プレフェッチは 220 個の空のバイトを返すので、コストを優先し...
リダイレクトと2秒のフェードインで待っているすべてのページスイッチを停止する
4fae924のプレデンダー作業は、サーバーとルータを固定し、サイト ページを変更するために1-2秒かかるように感じた。 ネットワークではなかった。 2つのことはそれをやっていたし、両方はビルド、タイプチェック、そして両方に見えない lint run — hence **************************...
再びルートを準備し、何かをペイントするナビゲーションを与える
Locale レイアウトは、メッセージを bare getMessages() で解決しました。 ヘッダは ENTIRE アプリケーションを静的レンダリングから除外するように要求します。 なし load.tsx どこでも、次にダイナミックなルートをプリフェッチするのは何もありませんでした。 <Link> prefetc...
各ハンドラーのプラットフォームのアノテーションを一度解決
インターセプターは /** に登録されるので、アノテーションのルックアップは毎回実行されます このサービスは、リクエストインクルード、AnnotatedElementUtilsのウォークを提供しています。 メソッド、そのクラス、メタアノテーションを毎回行います。 回答ができません プロセスが命じている間変更; ハンドラ...
未読カウントを要求します。, フォルダツリー全体ではありません
メールバッジは1つの整数を必要とし、メールボックス内のすべてのフォルダをフェッチしていました IMAP プロバイダーが最も高価な電話メールのバックエンドであることを確認 なる。 MailService は、MailReader のシングルフォルダの未読カウントを公開しています。 常にSTATUSと答えることができるよう...
2つのルックアップで受信トレイの待ち時間を作るのを止めて、それに答えを見ることができます
2つのラウンドトリップは、まだレンダリングされた受信トレイの前面に座っています。 そこに残っている唯一のものだった — フォルダーツリーと最初のページは既に 早く到着したので、メンバーは持っていたメールの上にブートスケルトンを見ていました 既に読み込まれた。 メールボックスプローブは、その前に、プロバイダの検索を待つ...
先に尋ね、一度に尋ね、変更されていないものを尋ねる停止
/messagesの開口部とメールの見間を立たせる3つのこと。 バンドルが着陸するまでは、何も要求されません。 /messagesは複数を引っ張ります JavaScriptのメガバイト、メールの質問方法を知っているコンポーネント 到着し、パースされるまで存在しません。 最後のバイトが処理された後だけブラウザ。 ルート...
鍵の払戻しを停止し、待ち合わせを中止
一つのメッセージがフェッチされる前に、/messages が遅くなる3つのこと。 すべてのメールコールは、/api/generate-otk への往復を最初から行い、 結果はX-OTKです。 この辺のルートは、そのヘッダを読んでいません。プロキシ buildForwardHeaders の呼び出し者のセッションから独...
すべてのフォルダの開口部を停止し、すべてのメッセージのリベットを停止する
/messages の重要なパスの 2 つの往復の問題、目に見えない それらを引き起こしたコード。 listFolders は、各フォルダーの読み込み専用を開き、2 つの整数をオフにします。 です。 フォルダごとにSELECTとCLOSEが生成され、各メールボックスのインデックスがサーバービルドされます。 途中で、2...
要約スライスの対1の関連付けとスキャンの代わりにカウントを取得する
概要の注目と最近のスライスは、LAZYを離れた行ごとのタイトルを読みます @ManyToOneは、オープンセッションインビューでブロックごとに最大16個の追加選択をコストアップします。 4枚のスライスを全てLEFT JOIN FETCHに。 fetch の結合は、関連付けが両方のため、Pageable の横に安全です...
ウィークリーGeoLite再構築後のプランナー統計を更新
YugabyteDBは自動解析を行いません。ステージング+リネームスワップは置換されます。 geolite blocks 卸売 -- そのため、毎週日曜日にプランナーが持っていなかったので 5.8M行の統計。 ここにANALYZEを実行して、範囲指数にIPルックアップを維持します。 統計情報 クエリは 1.8ms を...
ジオライト レンジのインデックスは、YugabyteDB のデフォルト HASH ではなく ASC でなければなりません
IP の調査は範囲スキャンです: WHERE network start <= ? ネットワークで注文する start DESC LIMIT 1 YugabyteDB は、HASH によって LEADING のインデックスカラムを、そうでないと話さずに分割します。 CockroachDBのインデックスは、常に範囲順に...
ジオライト レンジのインデックスは、YugabyteDB のデフォルト HASH ではなく ASC でなければなりません
IP の調査は範囲スキャンです: WHERE network start <= ? ネットワークで注文する start DESC LIMIT 1 YugabyteDB は、HASH によって LEADING のインデックスカラムを、そうでないと話さずに分割します。 CockroachDBのインデックスは、常に範囲順に...
YugabyteDBのリソースとメモリをピントする
置換されたCockroachDBよりもLESSで実行されました -- 20Gi/6cpu に対して CockroachDBの32Gi/8cpu -- より必要としている間、YSQLは別々に動くので PostgreSQL はストレージエンジンの上部にある接続ごとのバックエンド処理を行います。 3つの変更: 1. ts...
YugabyteDBのリソースとメモリをピントする
置換されたCockroachDBよりもLESSで実行されました -- 20Gi/6cpu に対して CockroachDBの32Gi/8cpu -- より必要としている間、YSQLは別々に動くので PostgreSQL はストレージエンジンの上部にある接続ごとのバックエンド処理を行います。 3つの変更: 1. ts...
BLAKE3でハッシュだけなので、アップロードをスキップして実際に時間を節約
Dedup は、サーバが 'linked withOUT Upload' をログアウトし、 358 MB は残らない マシン — しかし、メンバーはまだ待っていた, コンピューティング SHA3-256 BLAKE3 と一緒に アップロードが18.8を取った20秒。 js-sha3は純粋なJavaScriptです。 B...
BLAKE3のみのクレームを受け付けるので、アップロードよりも優れている
リンクエンドポイントはハッシュを両方要求しました。 ブラウザは高速な SHA3-256 がないので、 すでに 358 MB ファイルが 18.8 秒のアップロードに対して ~20 秒のファイルを取りました。 しばらく待って、合理的に何も変更されていないと結論づけました。 sha3256は現在オプションです: 供給、そ...
BLAKE3単独で保存したコンテンツにマッチするので、ブラウザは尋ねる余裕があります
所持者がハッシュを両方必要としており、ブラウザは高速SHA3-256 — js-sha3がありません。 〜25 MB/秒で純粋なJavaScriptです。 358 MBビデオで測定された〜20秒の 18.8 秒のアップロードに対するハッシュ化なので、バックアップは帯域幅を保存し、 タイムストレートバック。 会員の側から...
履歴を読み込むことなく最新のスナップショット日付を読みます
要約は1日を必要とします。 2年の範囲を積むことで読みました スナップショットと最大を取る — 歴史の毎日5つのドメイン時間 このページの読み込みごとに、MAX() の質問に答えます.
アプリカタログリクエストごとの1つのプラン-matrixスキャン
また、今未使用の開発StageTypeインポートをドロップし、修正 ステージルールを記述した自動提案コメント、カタログ 置換.
1つのパスですべてのアプリのプランマトリックスの質問に答える
Apps & Featuresタブは、各アプリがプランの行列に表示されるかどうかを尋ねます。 per-appフォームは、アプリごとに1回プランフィーチャとアドオンテーブルをスキャンします。 単一のページをレンダリングするための完全なスキャンを数十回。 appInPlanMatrix() は全体を集めます 1つのパスで設...
プロバイダーがインスタンス全体であるときに、拡張ごとのコール履歴を再クエリするのを止めます
RingCentralのエンドポイントは拡張子/~で、引数を無視するので、 すべての拡張子の同じログ。 ページが新しいものを追加したら、残り 既に見られる応答のための往復を延長します。 FreePBX, その 歴史は、本物は永続的であり、影響を受けません.
SchemaCleanupRunnerで1ブームのcustomer id FK tug-of-warを停止する
売り主の小売店を外す-> コマース carts.customer idのアカウントクリーンアップドロップ, メニュー メニュー お問い合わせ 列は現在、Hibernate 所有の FK 列 (Cart.customer/DraftOrder.customer が稼働しています。 map @JoinColumn(name...
低いPoWの難しさ(費用1000のカウンター2000-4000)
ソルブコストは、CHALLENGE COST xカウンターの範囲の製品です。 どちらもありました オーバークランク (~37.5M PBKDF2 ラウンド, ~40-75x 在庫 Capcha), 作ります ウィジェットは、低エンドデバイスで遅くなります。 ~3M ラウンド (~12x より速い) にドロップ 意味のあ...
Tier 2 — Hikari + RestTemplate timeouts + Stripe SDK + Redis cache
- RestClientConfig: single shared RestTemplate bean with 5s connect / 30s read timeouts. MediaServiceClient / NotificationDispatchService / OfacSanctionsSer...
ページのリポのクエリ + countByStatus のホットパス
- LoanRepository: countByStatus / countByOrganization 統計 + Page<Loan> findByStatus(...) / メニュー メニュー ******************************************************** - L...
部分的な DTO をローカル状態にし、 refetch の後パッチを落として下さい
編集スタイルのオートセーブ(フィールド、雇用、資産、責任、REO、 宣言, 軍事的, HMDA の人口統計, 発信者) 完全に発行するために使用される mortgageAppsApi.get() パッチが返された後、往復/往復を倍増 顕著なキーストローク。 新しい appMutators.ts はそれぞれを結合する純粋...
Collapse パイプライン kanban N+1 を 1 つのグループ化された数のクエリに
listForOrganization() は、ローンごとに1つの条件を発行するために使用されます (201 クエリ 200 融資で。 今、単一のグループ化された JPQL の総計は、融資File.uid によって鍵を握りました LoanConditionCountsRow にプロジェクトのオープンとブロックオープン数...
作成時にチケットの地理を保存し、GeoLiteを読み込む
******************** では、訪問者の地理をキャプチャ 一度 (GeoLookupService 経由) と persists ip/country/city/subdivision 上の サポートチケット自体。 SupportTicketService.toDTO は、チケットを直接削除するジオを...
バルクロード訪問者とGeoLiteの検索をリストでスキップ
/api/support/tickets リストのエンドポイントが実行されました。 - 20**************** 呼び出し (N+1) - GeoLookupService.lookup への 20 呼び出し、各範囲スキャン GeoLiteブロックテーブル(行のミリオン)と位置に対して fetch — 〜4...
Add バルクローディングのためのfindBySessionGuidIn
サポートチケットリストのエンドポイントで使用して、すべての訪問者に N の代わりに 1 つのクエリのページは、findBySessionGuid 呼び出しを分離します.