惠州网站优化建设,做阿里巴巴跟网站哪个更好,我的世界官方网站铁马铠怎么做,三丰云做网站教程当浏览器第一次加载资源的时候#xff0c;返回一般为200#xff0c;意思是成功获取资源#xff0c;并会在浏览器的缓存中记录下max-age#xff0c;第二次访问的时候#xff1a;如果只是用浏览器打开#xff0c;那么浏览器会去判断这个资源在缓存里有没有#xff0c;如果… 当浏览器第一次加载资源的时候返回一般为200意思是成功获取资源并会在浏览器的缓存中记录下max-age第二次访问的时候如果只是用浏览器打开那么浏览器会去判断这个资源在缓存里有没有如果有的话会去判断max-age看看过期没有如果没有过期则直接读缓存根本不会和服务器进行交互换句话说断网都能打开就和本地跑一样如果已经过期了那就去服务器请求等待服务器响应这是很费时间的服务器如果发现资源没有改变过那么就会返回304告诉浏览器我没变过你去读缓存吧于是浏览器也不用从服务器拉数据了然而等待服务器响应也是一个很要命的问题在网速发达的今天等一个响应有时比下载还慢。 如果是用浏览器刷新的那么浏览器不会去判断max-age了直接去服务器拿如果服务器判断资源没变过则还是会返回304和上面是一样的所以刷新一下其实很可怕等于把所有的资源都要去服务器请求一边问问服务器我过期了没有。综上尽量减少网页的资源数量尽量合并JS CSS 图片响应速度将会猛增 3xx 重定向 要完成请求需要进一步操作。通常这些状态码用来重定向。Google 建议您在每次请求中使用重定向不要超过 5 次。您可以使用网站管理员工具查看一下 Googlebot 在抓取重定向网页时是否遇到问题。诊断下的网络抓取页列出了由于重定向错误导致 Googlebot 无法抓取的网址。 300多种选择针对请求服务器可执行多种操作。服务器可根据请求者 (user agent) 选择一项操作或提供操作列表供请求者选择。301永久移动请求的网页已永久移动到新位置。服务器返回此响应对 GET 或 HEAD 请求的响应时会自动将请求者转到新位置。您应使用此代码告诉 Googlebot 某个网页或网站已永久移动到新位置。302临时移动服务器目前从不同位置的网页响应请求但请求者应继续使用原有位置来响应以后的请求。此代码与响应 GET 和 HEAD 请求的 301 代码类似会自动将请求者转到不同的位置但您不应使用此代码来告诉 Googlebot 某个网页或网站已经移动因为 Googlebot 会继续抓取原有位置并编制索引。303查看其他位置请求者应当对不同的位置使用单独的 GET 请求来检索响应时服务器返回此代码。对于除 HEAD 之外的所有请求服务器会自动转到其他位置。304未修改 自从上次请求后请求的网页未修改过。服务器返回此响应时不会返回网页内容。 如果网页自请求者上次请求后再也没有更改过您应将服务器配置为返回此响应称为 If-Modified-Since HTTP 标头。服务器可以告诉 Googlebot 自从上次抓取后网页没有变更进而节省带宽和开销。 .305使用代理请求者只能使用代理访问请求的网页。如果服务器返回此响应还表示请求者应使用代理。307临时重定向服务器目前从不同位置的网页响应请求但请求者应继续使用原有位置来响应以后的请求。此代码与响应 GET 和 HEAD 请求的 a hrefanswer.py?answer301/a 代码类似会自动将请求者转到不同的位置但您不应使用此代码来告诉 Googlebot 某个页面或网站已经移动因为 Googlebot 会继续抓取原有位置并编制索引。 打算将cache-control的各个值都试一遍看看最终效果是否和预期一致。 先尝试max-age。其作用是假如请求了服务器并在a时刻返回响应结果则在max-age规定的秒数内浏览器将不会发送对应的请求到服务器数据由缓存直接返回超过这一时间段才进一步由服务器决定是返回新数据还是仍由缓存提供。 设置max-age的方式是tomcat的filter。 Java代码 package itims; public class TestHTTP implements Filter{ private static transient Log logger LogFactory.getLog(TestHTTP.class); Override public void destroy() { } Override public void doFilter(ServletRequest servletrequest, ServletResponse servletresponse, FilterChain filterchain) throws IOException, ServletException { filterchain.doFilter(servletrequest, servletresponse); if (servletrequest instanceof HttpServletRequest servletresponse instanceof HttpServletResponse) { HttpServletRequest request (HttpServletRequest) servletrequest; HttpServletResponse response (HttpServletResponse) servletresponse; logger.info(request.getRequestURI:request.getRequestURI()); response.setHeader(Cache-Control, max-age cacheTime); } } Override public void init(FilterConfig arg0) throws ServletException { } } web.xml,只针对js和css文件进行设置。 Xml代码 filter filter-namecache-filter/filter-name filter-classitims.TestHTTP/filter-class init-param param-namecache-time/param-name param-value30/param-value /init-param /filter filter-mapping filter-namecache-filter/filter-name url-pattern*.js/url-pattern /filter-mapping filter-mapping filter-namecache-filter/filter-name url-pattern*.css/url-pattern /filter-mapping httpTest.jsp Html代码 % page languagejava contentTypetext/html; charsetISO-8859-1 pageEncodingISO-8859-1% !DOCTYPE html PUBLIC -//W3C//DTD HTML 4.01 Transitional//EN http://www.w3.org/TR/html4/loose.dtd % String path (String) request.getContextPath(); % html head !-- meta http-equivrefresh content5;urlhttp://localhost:8088/itims/testRRD.action -- meta http-equivContent-Type contenttext/html; charsetISO-8859-1 / script typetext/javascript src%path%/widget/jquery/jquery-1.3.2.min.js/script titlehttpTest/title /head body p success! /p /body /html 在浏览器内输入httpTest.jsp,则抓取的请求/响应信息如下 Java代码 http://localhost:8088/itims/widget/jquery/jquery-1.3.2.min.js GET /itims/widget/jquery/jquery-1.3.2.min.js HTTP/1.1 Host: localhost:8088 User-Agent: Mozilla/5.0 (Windows NT 5.1; rv:6.0) Gecko/20100101 Firefox/6.0 Accept: */* Accept-Language: zh-cn,zh;q0.5 Accept-Encoding: gzip, deflate Accept-Charset: GB2312,utf-8;q0.7,*;q0.7 Connection: keep-alive Referer: http://localhost:8088/itims/springTest.jsp Cookie: JSESSIONID4B83B20F13BBCD37D1C0FB406807FA75 If-Modified-Since: Sun, 28 Aug 2011 13:06:44 GMT If-None-Match: W/57254-1314536804640 HTTP/1.1 304 Not Modified Server: Apache-Coyote/1.1 Etag: W/57254-1314536804640 Cache-Control: max-age30 Date: Sun, 28 Aug 2011 13:19:35 GMT jquery-1.3.2.min.js的max-age被设置为30秒。即30秒内无论用户在浏览器地址栏上敲多少次回车后台也不应该打印日志而我这个信息抓取工具也不应该抓取到任何信息。事实的确如此。注意不同的操作方式影响最终结果原因是刷新和强制刷新会额外发送cache-control信息。 f5或刷新按钮cache-control:max-age0 ctrlf5:cache-control:no-cache pragma:no-cache 疑难杂症 1、为什么把缓存清干净并访问页面后再次通过按回车访问页面时浏览器却不再发送请求了而按f5又可以 答观察响应信息可知把缓存清干净后cache-control的设置消失了原因不明。如果按回车则此时缓存永远都起作用自然不用访问服务器而按f5则是强制访问且此时cache-control的设置又能出现所以之后所有的访问都遵循cache-control的设置。转载于:https://www.cnblogs.com/panxuejun/p/5842069.html