Saat menggunakan Spring Boot + Freemarker untuk mengembangkan proyek web, beberapa file statis relatif besar, dan jika diakses pada PC, kecepatannya akan jauh lebih lambat saat mengakses di ponsel, terutama saat menggunakan lalu lintas, dan itu akan mengkonsumsi banyak lalu lintas.
Dengan menangkap permintaan, Anda dapat menemukan bahwa setiap kali Anda memasukkan halaman, Anda perlu memuat file statis. Jika perusahaan yang tidak kekurangan uang dapat menempatkan file statis pada CDN untuk mempercepat akses, atau menggunakan Nginx untuk menyimpan file statis.
Hari ini saya akan memperkenalkan kepada Anda metode optimasi cache yang berbeda. Melalui mekanisme cache Spring, file statis di -cache. Untuk mengonfigurasi cache file statis di Spring Boot, Anda hanya perlu menambahkan konfigurasi berikut ke file konfigurasi:
# Sumber Daya Cache Waktu, unit detik spring.resources.cache-period = 604800 # Aktifkan gzip kompresi spring.resources.chain.gzipped = true # aktifkan cache spring.resources.chain.cache = false
Anda dapat merujuk pada dokumentasi untuk konfigurasi: bagian penanganan sumber daya pegas https://docs.spring.io/spring-boot/docs/1.5.4.release/reference/htmlsingle/
Setelah menambahkan konfigurasi cache, setelah kami mengakses halaman, sumber daya statis yang dimuat akan di -cache. Selama kunjungan kedua, kami tidak akan lagi meminta unduhan lagi. Dengan menangkap paket, kita dapat melihat bahwa itu memang telah di -cache.
Di kolom ukuran, ada dari cache memori. Sumber daya di -cache dalam memori browser, dan beberapa file di -cacat pada disk, yaitu, dari cache disk.
Tujuan optimasi adalah untuk mencapai, tetapi ada masalah kecil yang belum diselesaikan, yaitu, jika file sumber daya saya berubah, seperti file CSS dimodifikasi, dan ketika server saya merilisnya, masih akan ada cache pada pengguna.
Efek terbaik adalah ketika file berubah atau ketika program server restart, permintaan pengguna perlu mengunduh sumber daya terbaru di server. Ketika tidak ada restart, gunakan konten yang di -cache, sehingga pengguna dapat melihat konten terbaru segera setelah perubahan.
Kita dapat menggunakan nomor versi untuk menyelesaikan masalah ini, yaitu menambahkan nomor versi setelah sumber daya statis, dan mengubah nomor versi ketika sumber daya berubah, sehingga tidak akan ada masalah.
Cara menggunakannya adalah sebagai berikut:
<tautan rel = "stylesheet" href = "css /main-app.css? versi = $ {versi!}" rel = "eksternal nofollow" />Penggunaannya sangat sederhana, kuncinya adalah dari mana nilai versi berasal?
Kita dapat mengatur nilai ini melalui kode sebelum memulai:
System.setProperty ("Versi", Versi);Nilai ini dapat diteruskan melalui arg dari metode utama dan secara dinamis diteruskan ke program dalam skrip yang memulai proyek. Skrip startup dapat memperoleh nilai MD5 dari toples program sebagai nomor versi. Dengan cara ini, ketika program server restart, nomor versi berubah dan cache menjadi tidak valid.
Kemudian dapatkan nilai ini di filter dan atur ke permintaan dan Anda dapat menggunakannya di setiap halaman.
Versi string = system.getProperty ("versi"); req.setAttribute ("versi", versi == null? "1.0.0": versi);Selain metode ini untuk melewati parameter, Anda juga dapat menggunakan plugin paket khusus untuk mengganti versi dengan konten tertentu saat pengemasan.
Metode di atas adalah mengontrol perubahan file dengan menghasilkan versi sendiri. Faktanya, Spring MVC telah menyediakan fungsi manajemen versi file statis. Ada dua cara. Salah satunya adalah menghasilkan nomor versi melalui MD5 dari sumber daya. Jika konten file berubah, MD5 pasti akan berubah juga. Cara lain adalah awalan sumber daya dengan nomor versi.
Md5
Tambahkan konfigurasi berikut ke file Properties:
spring.resources.chain.strategy.content.enabled = truespring.resources.chain.strategy.content.paths =/**
Pemrosesan Penambahan URL:
@ControllerAdvicepublic Classion ControllerConfig {@Autowired ResourceURLProvider ResourceUrlProvider; @ModelAttribute ("URLS") URL PUBLIK PUBLIK () {return this.ResourceUrlProvider; }}Penggunaan halaman adalah sebagai berikut:
Salinan kode adalah sebagai berikut:
<tautan rel = "stylesheet" type = "text/css" href = "$ {urls.getForLookuppath ('/css/main-app.css')}" rel = "nofollow eksternal">
Setelah kompilasi, itu akan menjadi konten berikut:
Salinan kode adalah sebagai berikut:
<tautan rel = "stylesheet" type = "text/css" href = "/css/utama-app-4v371326bb93ce4b611853a309b69b33.css" rel = "nofollow eksternal">
Nomor Versi
Tambahkan konfigurasi berikut ke file Properties:
spring.resources.chain.strategy.fixed.enabled = truespring.resources.chain.strategy.fixed.paths =/js/**,/v1.0.0/** spring.resources.chain.strategy.fixed.version = v1.0.0
Penggunaan halaman adalah sebagai berikut:
<script type = "text/javascript" src = "$ {urls.getForLookuppath ('/js/main.js')}"> </script>Setelah kompilasi, itu akan menjadi konten berikut:
<type skrip = "Text/JavaScript" src = "/v1.0.0/js/main.js"> </script>
Tidak peduli metode mana yang Anda gunakan, Anda dapat mencapai efeknya dan beban kerja tidak akan terlalu besar. Optimalisasi tidak ada habisnya dan Anda akan selesai.
Di atas adalah semua konten artikel ini. Saya berharap ini akan membantu untuk pembelajaran semua orang dan saya harap semua orang akan lebih mendukung wulin.com.