可能重复:
App_Theme文件夹中的CSS在浏览器中缓存
我已经看到" 强制浏览器重新加载缓存的CSS/JS文件的优雅方法是什么? "但答案是使用PHP,并没有解决CSS由ASP.Net主题动态注入的事实.
有人可以用简单的术语向我解释GWT中的缓存概念.我在很多地方都读到了这个,但可能是由于我的知识有限,我无法理解它.
比如nocache.js,cache.js
或者其他一些事情,例如永久地使客户端缓存文件或如何使客户端缓存文件,然后如果文件在服务器上更改,则客户端再次下载这些文件
我有一个相当大的jpg图像文件和几个css文件,这些不会改变每次重新加载,但每次它加载完整的imgae而不是在浏览器中缓存,我尝试更改配置,如config.action_controller. perform_caching = true等但似乎没有任何帮助.有没有办法做到这一点?
ruby-on-rails heroku cache-control browser-cache ruby-on-rails-3
我们的网站正在考虑切换到http2.
我的理解是http2渲染文件连接等优化技术已经过时,因为使用http2的服务器只发送一个请求.
相反,我看到的建议是,最好保持较小的文件大小,以便它们更有可能被浏览器缓存.
它可能取决于网站的大小,但如果网站的文件使用http2并希望专注于缓存,它应该有多小?
在我们的例子中,我们的许多单独的js和css文件都在1kb到180kb的范围内.Jquery和bootstrap可能更多.累积起来,我们网站上新下载的页面通常不到900 kb.
所以我有两个问题:
这些文件大小是否足够小,可以被浏览器缓存?
如果它们小到可以缓存,那么对于使用不支持http2的浏览器的用户来说,连接文件是否合适.
在这种情况下拥有更大的文件大小并使用HTTP2会不会有害?这样,运行任一协议的用户都会受益,因为站点可以针对http和http2进行优化.
我想告诉ASP.NET Core为Cache-ControlMVC控制器提供的所有响应添加公共和相关标头,包括HTML页面和Web API响应.我不希望策略应用于缓存静态文件; 那些我想要缓存的人.
在特殊情况下,我想禁用缓存,相当于将此属性应用于所有控制器:
[ResponseCache(NoStore = true, Location = ResponseCacheLocation.None)]
Run Code Online (Sandbox Code Playgroud)
我可以创建一个具有此属性的基本控制器,并从中派生所有其他控制器.我想知道是否存在基于配置的方法,以避免需要这样的基本控制器.
我试图弄清楚服务工作者如何处理响应中的缓存标头.我现在已经实现了几个服务工作者但是从来不必担心缓存标题,应该缓存多长时间的项目等等.我现在正在企业生产站点上实现它,这些东西实际上非常重要.
基本上在使用服务工作者时,是否完全绕过了http缓存?
那么我是否需要构建一个框架来处理资源过期/失效,就像我们常常使用的http缓存一样?或者我在说垃圾?
如果有人可以提供一些澄清,这将是非常有用的.我看到它的方式有3种可能的情况:
一个).网络请求=>服务工作者获取=>(浏览器缓存?)<=>服务器
B).网络请求<=>(浏览器缓存?)<=>服务工作者获取<=>服务器
C).网络请求=>服务工作者获取<=>服务器
我在本地进行了测试,似乎是C).是正确的实现,我们开发人员牺牲了缓存头/持续时间抽象来进行控制.
我对此很好,只是希望它在我运行之前澄清并构建一个框架来阅读和尊重服务工作者中的缓存头.
每当我运行项目时,从远程服务器请求许多文件(CSS、图像和 js)并且项目加载缓慢。
为了处理这个问题,我在 Chrome DevTools 的网络选项卡(用于缓存所有文件)中取消选中禁用所有文件的缓存,如下所示:
但是当我需要一些文件(例如 test.js,...)时,问题就开始了,因为它们变化很快,所以没有缓存。
如何在 google chrome DevTools 中禁用某些文件(JS、CSS、...)的缓存?
javascript browser google-chrome developer-tools browser-cache
我正在构建一个简单的画廊+幻灯片应用程序。
在画廊组件中,我拥有所有网址并将它们显示在GalleryItem组件中。
<gallery-item v-for="i in images" :item="i" :key="i.uid"/>
Run Code Online (Sandbox Code Playgroud)
GalleryItem然后使用
<img :src="item.url"/>
Run Code Online (Sandbox Code Playgroud)
显示图像。
如果用户单击任何一个,GalleryItem它将在灯箱/幻灯片组件中突出显示。
<lightbox :item="highlightedItem"/>
Run Code Online (Sandbox Code Playgroud)
再次使用
<img :src="item.url"/>
Run Code Online (Sandbox Code Playgroud)
我天真地期望浏览器缓存该请求,而不是重新加载完全相同的 URL,但这正是发生的情况。
有没有什么优雅的方法可以避免这种情况并在加载一次时缓存图像?
我一直在阅读有关 Etag 的内容,并且我知道有两种生成 Etag 的方法,弱的和强的。弱 Etag 在计算上比强 Etag 更容易生成。我还了解到,弱 Etag 对于大多数用例来说实际上已经足够了。
来自MDN
弱验证器很容易生成,但对于比较来说用处不大。强大的验证器非常适合比较,但很难有效生成。
另一个片段:
相同资源的两种表示形式的弱 Etag 值可能在语义上等效,但逐字节不同。
我发现很难理解资源在语义上相似但不是逐字节相同意味着什么?很高兴看到一些例子。
编辑:在这里找到了一个例子,但我不明白:
弱验证:两种资源表示在语义上是等效的,例如,从业务逻辑的角度来看,某些内容差异并不重要,例如,页面上显示的当前日期对于更新整个资源来说可能并不重要。
是否就像在生成 Etag 时,您可以决定内容的更改对于功能来说并不重要(例如,字体大小的 css 属性更改)并以 304 响应?如果是,那么浏览器上的资源什么时候更新,我猜只要Etag相同,浏览器就不会获取最新版本。在这种情况下,这可能意味着当发生重大更改并创建新的 Etag 时,CSS 属性更改只会与主要更改一起发送到浏览器。
我有一个盖茨比生成的网站,我在其中替换了主页的内容。
不幸的是,以前的版本提供了/page-data/index/page-data.json不正确的缓存控制标头,导致/page-data/index/page-data.json缓存在客户端浏览器上(除非强制刷新,否则会显示陈旧的数据)。我还发现 page-data.json 文件没有经过哈希处理(请参阅https://github.com/gatsbyjs/gatsby/issues/15080)。
我已经更新了缓存控制标头,以便从现在起版本不会被缓存,但这对现在拥有缓存版本的客户端没有帮助。
我该如何强制客户端请求该文件的最新版本?
browser-cache ×10
caching ×2
javascript ×2
asp.net ×1
asp.net-core ×1
browser ×1
css ×1
etag ×1
gatsby ×1
gwt ×1
heroku ×1
http ×1
http-headers ×1
http2 ×1
node.js ×1
pagespeed ×1
performance ×1
themes ×1
vue.js ×1
vuejs2 ×1