Rumah  >  Artikel  >  Java  >  Bagaimana untuk menggunakan cache penyemak imbas untuk mengurangkan beban pelayan dan meningkatkan kelajuan akses tapak web Java?

Bagaimana untuk menggunakan cache penyemak imbas untuk mengurangkan beban pelayan dan meningkatkan kelajuan akses tapak web Java?

PHPz
PHPzasal
2023-08-05 11:57:201349semak imbas

Bagaimana untuk menggunakan cache penyemak imbas untuk mengurangkan beban pelayan dan meningkatkan kelajuan akses tapak web Java?

Abstrak:
Dengan perkembangan Internet, kelajuan capaian laman web telah menjadi tumpuan pengguna. Dalam pembangunan laman web Java, melalui penggunaan cache penyemak imbas yang munasabah, beban pelayan dapat dikurangkan dengan berkesan dan kelajuan akses laman web dapat dipertingkatkan. Artikel ini akan memperkenalkan cara cache penyemak imbas berfungsi dan menggunakan contoh kod Java untuk menggambarkan cara menggunakan cache penyemak imbas untuk meningkatkan prestasi tapak web.

1. cache semula. Pelayan memulakan permintaan, dengan itu meningkatkan kelajuan akses. Caching penyemak imbas biasanya dibahagikan kepada dua jenis: caching kuat dan caching yang dirundingkan.

    Caching yang kuat
  1. Caching yang kuat bermakna penyemak imbas memuatkan sumber terus daripada cache dan tidak lagi menghantar permintaan kepada pelayan. Tetapan Tamat Tempoh atau Kawalan Cache dalam pengepala respons boleh mengawal masa tamat tempoh cache yang kuat. Tamat tempoh ialah masa mutlak, manakala Cache-Control ialah masa relatif.
Sebagai contoh, dalam Java, anda boleh menetapkan Expires dengan menetapkan pengepala HttpServletResponse:

response.setHeader("Expires", "Wed, 21 Oct 2020 07:28:00 GMT");

atau dengan menetapkan Cache-Control:

response.setHeader("Cache-Control", "max-age=3600");

Dengan cara ini anda boleh menetapkan masa tamat tempoh sumber kepada 1 jam.

    Caching rundingan
  1. Caching rundingan bermakna penyemak imbas menghantar permintaan kepada pelayan dan menentukan sama ada sumber telah tamat tempoh berdasarkan pengepala respons yang dikembalikan oleh pelayan. Jika sumber belum tamat tempoh, kod status 304 dikembalikan dan penyemak imbas memuatkan sumber terus dari cache jika sumber telah tamat tempoh, sumber itu dimuat turun dari pelayan sekali lagi.
Tetapkan Last-Modified dan Etag dalam pengepala respons untuk mengawal cache rundingan. Last-Modified mewakili masa pengubahsuaian terakhir sumber, dan Etag ialah pengecam unik yang digunakan untuk mengenal pasti versi sumber.

Sebagai contoh, dalam Java, anda boleh menetapkan Last-Modified dan Etag dengan menetapkan pengepala HttpServletResponse:

response.setHeader("Last-Modified", "Wed, 21 Oct 2020 07:28:00 GMT");
response.setHeader("Etag", "123456789");

Apabila penyemak imbas meminta sumber semula, If-Modified-Since dan If-None akan disertakan dalam pengepala permintaan -Padan, pelayan menentukan sama ada sumber telah tamat tempoh dengan membandingkan kedua-dua nilai ini dengan Last-Modified dan Etag bagi sumber tersebut.

2. Kaedah menggunakan cache penyemak imbas untuk meningkatkan kelajuan akses

Dalam pembangunan tapak web Java, anda boleh menggunakan cache penyemak imbas untuk meningkatkan kelajuan akses melalui kaedah berikut:

    Tetapkan kawalan cache yang munasabah
  1. Mengikut ciri dan ciri sumber Ubah kekerapan dan tetapkan Tamat Tempoh, Kawalan Cache, Ubah Terakhir dan Etag yang munasabah. Untuk sumber statik, masa cache boleh ditetapkan lebih lama untuk sumber dinamik, cache boleh dikawal dengan menjana Last-Modified dan Etag secara dinamik.
Sebagai contoh, untuk sumber statik:

response.setHeader("Expires", "Wed, 21 Oct 2022 07:28:00 GMT");
response.setHeader("Cache-Control", "max-age=31536000");

Untuk sumber dinamik:

String lastModified = generateLastModified(resource);
String etag = generateEtag(resource);
response.setHeader("Last-Modified", lastModified);
response.setHeader("Etag", etag);

    Gunakan nombor versi untuk mengawal cache
  1. Untuk sumber yang kerap dikemas kini, anda boleh menukar URL sumber atau menambah nombor versi pada URL selepas setiap cara pengubahsuaian untuk mengawal caching.
Sebagai contoh, tambahkan nombor versi pada URL sumber:

String version = getVersion();
String url = "/static/js/main.js?v=" + version;

Setiap kali anda mengemas kini sumber, anda hanya perlu mengubah suai nombor versi.

    Tetapkan strategi caching yang sesuai
  1. Tetapkan strategi caching yang sesuai berdasarkan ciri dan kepentingan sumber. Untuk sumber statik dan sumber yang kerap diakses, masa cache boleh ditetapkan lebih lama untuk sumber dinamik dan sumber yang perlu dikemas kini dalam masa nyata, masa cache boleh ditetapkan lebih pendek.
Contohnya, untuk sumber statik:

response.setHeader("Expires", "Wed, 21 Oct 2022 07:28:00 GMT");
response.setHeader("Cache-Control", "max-age=31536000");

Untuk sumber dinamik:

response.setHeader("Expires", "0");
response.setHeader("Cache-Control", "no-store, must-revalidate");

    Penggabungan dan pemampatan sumber
  1. Gabungkan berbilang fail CSS atau JavaScript ke dalam satu fail, kurangkan bilangan permintaan dengan memampatkan saiz fail dan menambah baik lagi kelajuan akses.
Sebagai contoh, gabungkan dan mampatkan berbilang fail CSS:

List<String> cssFiles = Arrays.asList("style1.css", "style2.css");
String mergedCss = mergeAndCompressResources(cssFiles);
response.getWriter().write(mergedCss);

Kesimpulan:

Dengan menggunakan cache penyemak imbas secara rasional, anda boleh mengurangkan beban pelayan dengan berkesan dan meningkatkan kelajuan akses tapak web Java. Dengan menetapkan kawalan cache yang munasabah, nombor versi kompleks, strategi caching yang sesuai, dan penggabungan dan pemampatan sumber, prestasi tapak web boleh dipertingkatkan lagi dan memberikan pengalaman pengguna yang lebih pantas dan lebih baik.

Atas ialah kandungan terperinci Bagaimana untuk menggunakan cache penyemak imbas untuk mengurangkan beban pelayan dan meningkatkan kelajuan akses tapak web Java?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn