无效缓存或添加http请求

时间:2016-08-26 04:16:01

标签: css caching httprequest pagespeed

我使用当前正在处理的应用程序多次遇到过这种情况。

我想在页面中实现一大块新CSS。我有两个选择:

  1. 将CSS添加到现有CSS包(ASP.NETs包实用程序中的缩小CSS),从而使该包的缓存无效
  2. 创建一个新捆绑包并将其包含在页面中(在正文中),从而生成新的http请求
  3. 你会选择哪个? #1使缓存无效,但阻止了新的http请求。 #2创建一个新的http请求,但利用其他CSS包的缓存。

2 个答案:

答案 0 :(得分:1)

取决于你要添加什么样的新CSS,但一般来说我会选择方案#2。我喜欢使用CDN作为框架CSS文件,然后使用我的域来托管网站主题CSS和页面特定的CSS文件。利用并行下载。

<!-- 1 http request to CDN for main framework, gets cached -->
<link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/foundation/5.5.3/css/foundation.min.css"/>

<!-- 1 http request to mydomain.com for main theme, gets cached -->
<link rel="stylesheet" href="http://domain.com/css/themes/modern.min.css"/>

<!-- 1 http request to mydomain.com for page-specific styles -->
<link rel="stylesheet" href="http://domain.com/css/pages/product-detail.css"/>

答案 1 :(得分:0)

取决于传输速率 一般来说,将CSS包含在<head>而不是单独的文件中要好得多。

当CSS处于头脑中时,浏览器在获取HTML之前拥有所有CSS。这样,即使在基本HTML <body>完成加载之前,浏览器也可以开始呈现页面。

如果传输速率太慢并且CSS需要很长时间才能到达浏览器,则可能需要单独的文件。
如果CSS传输时间大于HTTP请求连接时间,那么何时开始查看单独的CSS文件。

如果CDN尚未用于其他内容,则使用CDN将添加另一个DNS查找。

还要确保gzip已打开。

如果缓存HTML页面,#1不会使缓存失效。

缓存对第一次访问者没有任何作用,如果页面需要很长时间加载,则第一次访问者可能永远不会成为访问者。