广州百度SEO优化公司:网站缓存策略

广州百度SEO优化公司:网站缓存策略,今天越视界小编要和大家说说,网站缓存策略,什么是网站缓存相信大家并不陌生,就是cookie,广州百度SEO公司越视界将从技术角度为大家揭秘网站缓存策略秘密。

在这《广州百度SEO优化公司:网站缓存策略》文章中,我们将讨论一些Web内容缓存的基本概念。这主要包括如何选择缓存策略以保证互联网范围内的缓存能够正确的处理您的内容。我们将谈一谈缓存带来的好处、副作用以及不同的策略能带来的性能和灵活性的最大结合。

广州百度SEO优化公司:网站缓存策略
广州百度SEO优化公司:网站缓存策略

什么是缓存(caching)?

缓存(caching)是一个描述存储可重用资源以便加快后续请求的行为的术语。有许多不同类型的缓存,每种都有其自身的特点,应用程序缓存和内存缓存由于其对特定回复的加速,都很常用。

广州百度SEO优化公司:网站缓存策略》文章中的主要讲述的Web缓存是一种不同类型的缓存。Web缓存是HTTP协议的一个核心特性,它能最小化网络流量,并且提升用户所感知的整个系统响应速度。内容从服务器到浏览器的传输过程中,每个层面都可以找到缓存的身影。

Web缓存根据特定的规则缓存相应HTTP请求的响应。对于缓存内容的后续请求便可以直接由缓存满足而不是重新发送请求到Web服务器。

好处

有效的缓存技术不仅可以帮助用户,还可以帮助内容的提供者。缓存对内容分发带来的好处有:

●减少网络开销:内容可以在从内容提供者到内容消费者网络路径之间的许多不同的地方被缓存。当内容在距离内容消费者更近的地方被缓存时,由于缓存的存在,请求将不会消耗额外的网络资源。

●加快响应速度:由于并不是必须通过整个网络往返,缓存可以使内容的获得变得更快。缓存放在距用户更近的地方,例如浏览器缓存,使得内容的获取几乎是瞬时的。

●在同样的硬件上提高速度:对于保存原始内容的服务器来说,更多的性能可以通过允许激进的缓存策略从硬件上压榨出来。内容拥有者们可以利用分发路径上某个强大的服务器来应对特定内容负载的冲击。

●网络中断时内容依旧可用:使用某种策略,缓存可以保证在原始服务器变得不可用时,相应的内容对用户依旧可用。

什么能被缓存?

某些特定的内容比其他内容更容易被缓存。对大多数站点来说,一些适合缓存的内容如下:

●Logo和商标图像

●普通的不变化的图像(例如,导航图标)

●CSS样式表

●普通的Javascript文件

●可下载的内容

●媒体文件

这些文件更倾向于不经常改变,所以长时间的对它们进行缓存能获得好处。

一些项目在缓存中必须加以注意:

●HTML页面

●会替换改变的图像

●经常修改的Javascript和CSS文件

●需要有认证后的cookies才能访问的内容

一些内容从来不应该被缓存:

●与敏感信息相关的资源(银行数据,等)

●用户相关且经常更改的数据

除上面的通用规则外,通常您需要指定一些规则以便于更好地缓存不同种类的内容。例如,如果登录的用户都看到的是同样的网站视图,就应该在任何地方缓存这个页面。如果登录的用户会在一段时间内看到站点中用户特定的视图,您应该让用户的浏览器缓存该数据而不应让任何中介节点缓存该视图。

Web内容缓存的位置

Web内容会在整个分发路径中的许多不同的位置被缓存:

●浏览器缓存:Web浏览器自身会维护一个小型缓存。典型地,浏览器使用一种策略指示缓存最重要的内容。这可能是用户相关的内容或可能会再次请求且下载代价较高。

●中间缓存代理:任何在客户端和您的基础架构之间的服务器都可以按期望缓存一些内容。这些缓存可能由ISP(网络服务提供者)或者其他独立组织提供。

●反向缓存:您的服务器基础架构可以为后端的服务实现自己的缓存。如果实现了缓存,那么便可以在处理请求的位置返回相应的内容而不用每次请求都使用后端服务。

上面的这些位置通常都可以根据它们自身的缓存策略和内容源的缓存策略缓存一些相应的内容。

一些您可以使用的指示内容缓存策略的Cache-Control的选项如下:

no-cache:这个指令指示所有缓存的内容在新的请求到达时必须先重新验证,再发送给客户端。这条指令实际将内容立刻标记为过期的,但允许通过验证手段重新验证以避免重新下载整个内容。

no-store:这条指令指示缓存的内容不能以任何方式被缓存。它适合在回复敏感信息时设置。

public:它将内容标记为公有的,这意味着它能被浏览器和其他任何中间节点缓存。通常,对于使用了HTTP验证的请求,其回复被默认标记为private。public标记将会覆盖这个设置。

private:它将内容标记为私有的。私有数据可以被用户的浏览器缓存,但不能被任何中间节点缓存。它通常用于用户相关的数据。

max-age:这个设置指示了缓存内容的最大生存期,它在最大生存期后必须在源服务器处被验证或被重新下载。在现代浏览器中这个选项大体上取代了Expires头部,浏览器也将其作为决定内容的新鲜度的基础。这个选项的值以秒为单位表示,最大可以表示一年的新鲜期(31536000秒)。

s-maxage:这个选项非常类似于max-age,它指明了内容能够被缓存的时间。区别是这个选项只在中间节点的缓存中有效。结合这两个选项可以构建更加灵活的缓存策略。

must-revalidate:它指明了由max-age、s-maxage或Expires头部指明的新鲜度信息必须被严格的遵守。它避免了缓存的数据在网络中断等类似的场景中被使用。

proxy-revalidate:它和上面的选项有着一样的作用,但只应用于中间的代理节点。在这种情况下,用户的浏览器可以在网络中断时使用过期内容,但中间缓存内容不能用于此目的。

no-transform:这个选项告诉缓存在任何情况下都不能因为性能的原因修改接收到的内容。这意味着,缓存不允许压缩接收到的内容(没有从原始服务器处接收过压缩版本的该内容)并发送。

这些选项能够以不同的方式结合以获得不同的缓存行为。一些互斥的值如下:

●no-cache,no-store以及由其他前面未提到的选项指明的常用的缓存行为

●public和private

如果no-store和no-cache都被设置,那么no-store会取代no-cache。对于非授权的请求的回复,public是隐含的设置。对于授权的请求的回复,private选项是隐含的。他们可以通过在Cache-Control头部中指明相应的相反的选项以覆盖。

开发一种缓存策略

在理想情况下,任何内容都可以被尽可能缓存,而您的服务器只需要偶尔的提供一些验证内容即可。但这在现实中很少发生,因此您应该尝试设置一些明智的缓存策略,以在长期缓存和站点改变的需求间达到平衡。

常见问题

在许多情况中,由于内容被产生的方式(如根据每个用户动态的产生)或者内容的特性(例如银行的敏感数据),这些内容不应该被缓存。另一些许多管理员在设置缓存时可能面对的问题是外部缓存的数据未过期,但新版本的数据已经产生。

这些都是经常遇到的问题,它们会影响缓存的性能和您提供的数据的准确性。然而,我们可以通过开发提前预见这些问题的缓存策略来缓解这些问题。

一般性建议

尽管您的实际情况会指导您选择的缓存策略,但是下面的建议能帮助您获得一些合理的决定。

在您担心使用哪一个特定的头部之前,有一些特定的步骤可以帮助您提高您的缓存命中率。一些建议如下:

●为图像、CSS和共享的内容建立特定的文件夹:将内容放到特定的文件夹内使得您可以方便的从您的站点中的任何页面引用这些内容。

●使用同样的URL来表示同样的内容:由于缓存使用内容请求中的主机名和路径作为键,因此应保证您的所有页面中的该内容的引用方式相同,前一个建议能让这点更加容易做到。

●尽可能使用CSS图像拼接:对于像图标和导航等内容,使用CSS图像拼接能够减少渲染您页面所需要的请求往返,并且允许对拼接缓存很长一段时间。

●尽可能将主机脚本和外部资源本地化:如果您使用Javascript脚本和其他外部资源,如果上游没有提供合适的缓存头部,那么您应考虑将这些内容放在您自己的服务器上。您应该注意上游的任何更新,以便更新本地的拷贝。

●对缓存内容收集文件摘要:静态的内容比如CSS和Javascript文件等通常比较适合收集文件摘要。这意味着为文件名增加一个独特的标志符(通常是这个文件的哈希值)可以在文件修改后绕开缓存保证新的内容被重新获取。有很多工具可以帮助您创建文件摘要并且修改HTML文档中的引用。

对于不同的文件正确地选择不同的头部这件事,下面的内容可以作为一般性的参考:

●允许所有的缓存存储一般内容:静态内容以及非用户相关的内容应该在分发链的所有节点被缓存。这使得中间节点可以将该内容回复给多个用户。

●允许浏览器缓存用户相关的内容:对于每个用户的数据,通常在用户自己的浏览器中缓存是可以被接受且有益的。缓存在用户自身的浏览器能够使得用户在接下来的浏览中能够瞬时读取,但这些内容不适合在任何中间代理节点缓存。

●将时间敏感的内容作为特例:如果您的数据是时间敏感的,那么相对上面两条参考,应该将这些数据作为特例,以保证过期的数据不会在关键的情况下被使用。例如,您的站点有一个购物车,它应该立刻反应购物车里面的物品。依据内容的特点,可以在Cache-Control头部中使用no-cache或no-store选项。

●总是提供验证器:验证器使得过期的内容可以无需重新下载而得到刷新。设置ETag和Last-Modified头部将允许缓存向原始服务器验证内容,并在内容未修改时刷新该内容新鲜度以减少负载。

●对于支持的内容设置长的新鲜期:为了更加有效的利用缓存,一些作为支持性的内容应该被设置较长的新鲜期。这通常比较适合图像和CSS等由用户请求用来渲染HTML页面的内容。和文件摘要一起,设置延长的新鲜期将允许缓存长时间的存储这些资源。如果资源发生改变,修改的文件摘要将会使缓存的数据无效并触发对新的内容的下载。那时,新的支持的内容会继续被缓存。

●对父内容设置短的新鲜期:为了使得前面的模式正常工作,容器类的内容应该相应的设置短的新鲜期,或者设置不全部缓存。这通常是在其他协助内容中使用的HTML页面。这个HTML页面将会被频繁的下载,使得它能快速的响应改变。支持性的内容因此可以被尽量缓存。

关键之处便在于达到平衡,一方面可以尽量的进行缓存,另一方面为未来保留当改变发生时从而改变整个内容的机会。您的站点应该同时具有:

●尽量缓存的内容

●拥有短的新鲜期的缓存内容,可以被重新验证

●完全不被缓存的内容

这样做的目的便是将内容尽可能的移动到第一个分类(尽量缓存)中的同时,维持可以接受的缓存命中率。

看了这么多有关于广州百度SEO优化公司:网站缓存策略的相关内容大家有没有什么收获呢?越视界是一家专业的广州百度SEO优化公司,咨询电话:4000-565-626,广州百度SEO优化公司:网站缓存策略的相关内容就为大家介绍到这里了。

北京网站优化公司_SEO优化公司_北京新闻发稿_稿件策划撰写_越视界

相关新闻