I.はじめに
場合によっては、ユーザーが QR コードをスキャンして、自分のサーバーのフロントエンド ページにジャンプする必要があることがあります (もちろん、バックエンド URL にジャンプしても問題ありません)。
QR コードは基本的に URL であり、携帯電話でコードをスキャンすると、この URL にアクセスできます。
ただし、URL が長すぎる場合 (アドレスが複雑すぎ、パラメーターが多すぎる場合)、生成される QR コードは非常に密になり、携帯電話がコードをスキャンした後の解析とジャンプに時間がかかります。ユーザーエクスペリエンスも悪くなります。
この時点で、長い接続を短い接続に置き換える方法を見つける必要があります。これにより、生成される QR コードの密度が小さくなり、携帯電話でコードをスキャンした後にすぐにジャンプできるようになります。
2、アイデア
1. 私のシステムにはデータベース テーブル short_url があり、主に 4 つの列があります。
id
hash_code #存储长连接md5加密后得到的串
true_url #存储长连接
create_time
このうち、true_url にはリダイレクトされるべき長い接続が格納され、
hash_url には対応する短い接続が格納され、DigestUtils.md5Hex(true_url)
このメソッドは長い接続を md5 で暗号化し、取得した文字列を hash_code に格納するために使用されます。
2. QR コードを生成するときは、バックグラウンド インターフェイスを見つけてパラメータを渡しhash_code
、このアドレスを使用して QR コードを生成します。(このアドレスは非常に短いため、短いリンクと見なすことができます)
例:
http://localhost:8080/hash?code=qlwekjradioufqwe
この URL は短縮リンク QR コード アドレスです。
/hash
3. この短いリンクの QR コードをスキャンすると、最初にバックグラウンド インターフェイスにジャンプし、バックグラウンド インターフェイスがそれを取得しcode=qlwekjradioufqwe
て、データベース テーブル short_url をクエリします。
id hash_code true_url
1 qlwekjradioufqwe http://localhost:8080/a/b/c/d/e/f?a=1&b=2&c=3
hash_code に従って true_url をクエリし、この長い接続にリダイレクトします: http://localhost:8080/a/b/c/d/e/f?a=1&b=2&c=3
(もちろん、実際の長い接続は非常に長い場合があります)
4. データベースへのクエリ操作では、データベースへの負荷を軽減するミドルウェアとして Redis を使用できます。
3. まとめ
現在、携帯電話はより複雑な QR コード (長いリンク) をスキャンし、分析が遅く、ユーザー エクスペリエンスが低いため、QR コードの実現には短いリンクの QR コードが使用されています。携帯電話でのスキャンと分析がより速くなります。
その後の短い接続から長い接続へのバックグラウンド システムのリダイレクトは非常に高速であり、長い接続の QR コードを直接スキャンするよりもはるかに高速です。
したがって、ユーザー エクスペリエンスを最適化するために、接続時間が長い QR コードの代わりに接続時間の短い QR コードが使用されます。