Use Filter to specify your browser to cache or not cache server data

zhaozj2021-02-17  53

Use Filter to specify your browser to cache or not cache server data

At www.jdon.com, Mr. Peng said that the cache design is the key to improving the performance of Java system. The reasonable application of the cache is the most convincing place in the Jive Forum. Below we use the definition of the request head type Cache-Control in the HTTP Specification 1.1 to explain how to use the Filter mechanism to implement HTTP requests or not cache. Here we are listed here is to cache a picture, such as a website logo. We can specify the client browser cache to this logo cache, or not cache, and how long is a cache. In fact, similar functions are also available in ASP.NET, and more simple, interested readers can see the related articles of ASP.NET. Below we use the Servlet's Filter mechanism to implement the above features. The filter code is as follows: import java.io. *; import javax.servlet *; import javax.servlet.http *; import java.util *; public class ResponseHeaderFilter implements Filter {FilterConfig fc; public void doFilter (ServletRequest... req, ServletResponse res, FilterChain chain) throws IOException, ServletException {HttpServletResponse response = (HttpServletResponse) res; for (Enumeration e = fc.getInitParameterNames (); e.hasMoreElements ();) {String headerName = (String) e.nextElement ( ); response.addHeader (headerName, fc.getInitParameter (headerName));} chain.doFilter (req, response);} public void init (FilterConfig filterConfig) {this.fc = filterConfig;} public void destroy () {this. Fc = null;}} Add the following configuration responseheaderfilter com.jspbook.responseheaderfilter < Init-param> Cache-Control Max-age = 3600 responseheaderfilter /lyo.png < / url-pattern>

Pay attention to the black body part of the above. We put the above code in Tomcat (5.0.16) for testing. Note: In order to record the log requested by Tomcat, you need to remove the note, access log is recorded. In Catalina_Log. [Date of the day] .txt. In order to test our code, create a simple HTML file: a Simple Page </ title> </ head> <body> <p> Some text, with a logo </ p> < Img src = "logo.png"> </ body> </ html> Put Logo.png in the appropriate directory: 2004-01-15 18:48:20 RequestDumperValve [Catalina]: Request URI = / TEST. HTML ... (first visited) ======================================= ======================================= 2004-01-15 18:48:21 RequestDumperValve [Catalina]: header = cache-control = max-agn = 3600 ---------- ... (non-first access) == ============================================================================================================================================================================================================= =========== 2004-01-15 18:48:20 RequestDumperValVe [Catalina]: Request URI = / Test.html ---------- Vis, logo.png in cache During the period, it was not outputted by the server.</p> <p>According to HTTP1.1 specification, there are two ways to make browser cache data: 1. if-modified-since http request header 2, cache-control is of course if the data can be used as the following configuration: <filter> <filter- Name> ResponseHeaderfilter </ filter-name> <filter-class> com.jspbook.responseheaderfilter </ filter-class> <init-param> <param-name> cache-control </ param-name> <param-value> private No-cache, no-store </ param-value> </ init-param> </ filter> Welcome to Tian Chunfeng</p> <p>Accesine@163.com</p> <p>Author column</p> <p>http://www.9cbs.net/develop/author/netauthor/accesine960/</p> <p>Data flow to the client through the data stream in JSP</p></div><div class="text-center mt-3 text-grey"> 转载请注明原文地址:https://www.9cbs.com/read-30266.html</div><div class="plugin d-flex justify-content-center mt-3"></div><hr><div class="row"><div class="col-lg-12 text-muted mt-2"><i class="icon-tags mr-2"></i><span class="badge border border-secondary mr-2"><h2 class="h6 mb-0 small"><a class="text-secondary" href="tag-2.html">9cbs</a></h2></span></div></div></div></div><div class="card card-postlist border-white shadow"><div class="card-body"><div class="card-title"><div class="d-flex justify-content-between"><div><b>New Post</b>(<span class="posts">0</span>) </div><div></div></div></div><ul class="postlist list-unstyled"> </ul></div></div><div class="d-none threadlist"><input type="checkbox" name="modtid" value="30266" checked /></div></div></div></div></div><footer class="text-muted small bg-dark py-4 mt-3" id="footer"><div class="container"><div class="row"><div class="col">CopyRight © 2020 All Rights Reserved </div><div class="col text-right">Processed: <b>0.053</b>, SQL: <b>9</b></div></div></div></footer><script src="./lang/en-us/lang.js?2.2.0"></script><script src="view/js/jquery.min.js?2.2.0"></script><script src="view/js/popper.min.js?2.2.0"></script><script src="view/js/bootstrap.min.js?2.2.0"></script><script src="view/js/xiuno.js?2.2.0"></script><script src="view/js/bootstrap-plugin.js?2.2.0"></script><script src="view/js/async.min.js?2.2.0"></script><script src="view/js/form.js?2.2.0"></script><script> var debug = DEBUG = 0; var url_rewrite_on = 1; var url_path = './'; var forumarr = {"1":"Tech"}; var fid = 1; var uid = 0; var gid = 0; xn.options.water_image_url = 'view/img/water-small.png'; </script><script src="view/js/wellcms.js?2.2.0"></script><a class="scroll-to-top rounded" href="javascript:void(0);"><i class="icon-angle-up"></i></a><a class="scroll-to-bottom rounded" href="javascript:void(0);" style="display: inline;"><i class="icon-angle-down"></i></a></body></html><script> var forum_url = 'list-1.html'; var safe_token = 'Rd5wnFHU1yvpSTPAsvTX0dI5kAimtOoQiGcov1Clrg_2FoVHDSjoz2mrrzTCa_2FAwQyOKJuIU3X3H0Pv3KDEMlaAQ_3D_3D'; var body = $('body'); body.on('submit', '#form', function() { var jthis = $(this); var jsubmit = jthis.find('#submit'); jthis.reset(); jsubmit.button('loading'); var postdata = jthis.serializeObject(); $.xpost(jthis.attr('action'), postdata, function(code, message) { if(code == 0) { location.reload(); } else { $.alert(message); jsubmit.button('reset'); } }); return false; }); function resize_image() { var jmessagelist = $('div.message'); var first_width = jmessagelist.width(); jmessagelist.each(function() { var jdiv = $(this); var maxwidth = jdiv.attr('isfirst') ? first_width : jdiv.width(); var jmessage_width = Math.min(jdiv.width(), maxwidth); jdiv.find('img, embed, iframe, video').each(function() { var jimg = $(this); var img_width = this.org_width; var img_height = this.org_height; if(!img_width) { var img_width = jimg.attr('width'); var img_height = jimg.attr('height'); this.org_width = img_width; this.org_height = img_height; } if(img_width > jmessage_width) { if(this.tagName == 'IMG') { jimg.width(jmessage_width); jimg.css('height', 'auto'); jimg.css('cursor', 'pointer'); jimg.on('click', function() { }); } else { jimg.width(jmessage_width); var height = (img_height / img_width) * jimg.width(); jimg.height(height); } } }); }); } function resize_table() { $('div.message').each(function() { var jdiv = $(this); jdiv.find('table').addClass('table').wrap('<div class="table-responsive"></div>'); }); } $(function() { resize_image(); resize_table(); $(window).on('resize', resize_image); }); var jmessage = $('#message'); jmessage.on('focus', function() {if(jmessage.t) { clearTimeout(jmessage.t); jmessage.t = null; } jmessage.css('height', '6rem'); }); jmessage.on('blur', function() {jmessage.t = setTimeout(function() { jmessage.css('height', '2.5rem');}, 1000); }); $('#nav li[data-active="fid-1"]').addClass('active'); </script>