有人可以用简单的术语向我解释GWT中的缓存概念.我在很多地方都读到了这个,但可能是由于我的知识有限,我无法理解它.
比如nocache.js,cache.js
或者其他一些事情,例如永久地使客户端缓存文件或如何使客户端缓存文件,然后如果文件在服务器上更改,则客户端再次下载这些文件
我正在使用Play和Java运行应用程序,我需要为各种类型的资产设置到期日期:images,css,javascript等.
我在conf/routes文件中有以下内容:
GET /assets/*file controllers.Assets.at(path="/public", file)
Run Code Online (Sandbox Code Playgroud)
我能够在一个单独的文件中设置到期日期application.conf:
"assets.cache./public/js/pages/validation.js"="max-age=7200"
Run Code Online (Sandbox Code Playgroud)
但我无法将其设置为整个文件夹.我试过了
"assets.cache./public/js/pages/*.js"="max-age=7200"
"assets.cache./public/js/pages/*"="max-age=7200"
Run Code Online (Sandbox Code Playgroud)
但没有任何反应.我希望为/ js/pages文件夹中的所有内容设置到期日期.
我也试过了
assets.defaultCache="max-age=7200"
Run Code Online (Sandbox Code Playgroud)
根据http://www.jamesward.com/2014/04/29/optimizing-static-asset-loading-with-play-framework上的说明
以及
http.cacheControl=7200
Run Code Online (Sandbox Code Playgroud)
根据文档http://www.playframework.com/documentation/1.2.3/configuration#http
这些都不起作用.上面的更改是在application.conf中完成的.
我知道有一种方法可以通过定义控制器来改变我想要设置过期日期的路由的响应(): 静态内容的远期Expires标头
但我想知道如何从application.conf文件配置资产的到期日期.
我们的应用程序在S3 Linux实例上运行,因此无法在服务器上配置过期日期.
谢谢!
java browser-cache playframework expires-header playframework-2.0
我们的网站正在考虑切换到http2.
我的理解是http2渲染文件连接等优化技术已经过时,因为使用http2的服务器只发送一个请求.
相反,我看到的建议是,最好保持较小的文件大小,以便它们更有可能被浏览器缓存.
它可能取决于网站的大小,但如果网站的文件使用http2并希望专注于缓存,它应该有多小?
在我们的例子中,我们的许多单独的js和css文件都在1kb到180kb的范围内.Jquery和bootstrap可能更多.累积起来,我们网站上新下载的页面通常不到900 kb.
所以我有两个问题:
这些文件大小是否足够小,可以被浏览器缓存?
如果它们小到可以缓存,那么对于使用不支持http2的浏览器的用户来说,连接文件是否合适.
在这种情况下拥有更大的文件大小并使用HTTP2会不会有害?这样,运行任一协议的用户都会受益,因为站点可以针对http和http2进行优化.
使用Internet Explorer,您可以创建一个.bat文件来清除缓存.
例:
RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 255
REM History:
REM RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 1
REM Cookies:
REM RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 2
REM Temp Internet Files:
REM RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 8
REM Form Data:
REM RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 16
REM Passwords:
REM RunDll32.exe InetCpl.cpl,ClearMyTracksByProcess 32
REM OR
REM All:
rundll32.exe InetCpl.cpl,ClearMyTracksByProcess 4351
Run Code Online (Sandbox Code Playgroud)
有没有办法用Chrome和/或Firefox做到这一点?
也就是说,使用.bat在Windows计算机上运行的文件或powershell脚本,清除Chrome或Firefox的缓存?
我保证,我看了.
这是一个非常简单的例子来说明我使用CDN中的JQuery修改页面的问题:
<html>
<body>
<p>Hello Dean!</p>
<script src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js"></script>
<script>$("p").html("Hello, Gabe!")</script>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)
当您使用互联网连接加载此页面时,页面将显示"Hello Gabe".当我关闭互联网连接时,页面显示"Hello Dean"并显示错误 - JQuery不可用.
我的理解是CDN的有很长Cache-Control并且Expire在头响应,这是我理解的意思是,浏览器本地缓存文件.
$ curl -s -D - https://cdnjs.cloudflare.com/ajax/libs/jquery/2.1.3/jquery.min.js | head
HTTP/1.1 200 OK
Server: cloudflare-nginx
Date: Fri, 17 Apr 2015 16:30:33 GMT
Content-Type: application/javascript
Transfer-Encoding: chunked
Connection: keep-alive
Last-Modified: Thu, 18 Dec 2014 17:00:38 GMT
Expires: Wed, 06 Apr 2016 16:30:33 GMT
Cache-Control: public, max-age=30672000
Run Code Online (Sandbox Code Playgroud)
但这似乎并没有发生.有人可以解释一下发生了什么吗?另外 - 我怎样才能让浏览器在某个地方的缓存中使用JQuery的副本?
出现这个问题是因为我们希望使用CDN来服务外部库,但也希望能够离线开发页面 - 就像在飞机上一样.
我使用Chrome和Firefox获得了类似的行为.
当我点击“选择要上传的文件”(即输入类型=文件)时,我点击按钮并选择文件到在按钮旁边显示所选文件之间存在延迟。浏览器是否尝试将文件加载到浏览器中?为什么会有延迟。
后续,如何在选择文件后立即显示“请稍候..”消息。我尝试了各种 JQ 选项,似乎所有选项都在初始延迟后触发(正如我所说的,可能是浏览器正在尝试加载不确定的文件)我想用加载器小部件/消息来覆盖延迟。
请帮忙。
我.htaccess通过设置以下方式为静态站点设置了浏览器缓存:
# BROWER CACHING - 1 Day for images
<filesMatch ".(jpg|jpeg|gif|ico)$">
Header set Cache-Control "max-age=86400, public"
</filesMatch>
Run Code Online (Sandbox Code Playgroud)
我对这些具有1天缓存的图像很好,但网站经常更改,因此我不想缓存CSS和JS文件.
我读过ETag,据我所知,它允许你缓存一个文件,但也设置了它的创建日期,所以如果它在下次客户访问网站时得到更新,它将检查创建日期是否匹配.
我的网站http://www.front-end.io配置HTTP请求以从第一优先级的缓存加载资源.所以我的标题将是:
cache-control:max-age=315360000
ETag:W/"11913b-ks0rwRQM+ijHcl1HDuse3g"
Run Code Online (Sandbox Code Playgroud)
Chrome确实没有向服务器发起任何请求(甚至304),它直接从缓存加载:
我的Windows10 Chrome> 400毫秒从本地磁盘加载js文件.
我的Ubuntu Chromium也需要> 100ms.
但是FireFox只需要大约10毫秒!
我也发现了这个问题,谷歌Chrome从缓存加载图像比下载慢,但没有解释.
有人可以帮忙吗?谢谢.
我有一个使用 Angular 6 构建的站点。我们在 safari 浏览器上缓存图像时遇到问题。
图片在 safari 浏览器上不断下载,即使图片 URL 相同。Chrome 在不下载相同图像的情况下运行良好,但仅在 Safari 浏览器上出现问题。
您能分享一下您遇到此类问题的经验吗?
我注意到,当我使用 nginx 部署我的 flutter web 项目时,在执行“flutter build web”之后,如果我不删除缓存,旧文件仍然在我的 chrome 浏览器中。如果我部署更新,是否有办法强制用户自动刷新?
browser-cache ×10
caching ×4
performance ×2
.htaccess ×1
angular ×1
cdn ×1
etag ×1
firefox ×1
flutter ×1
flutter-web ×1
gwt ×1
html5 ×1
http2 ×1
image ×1
java ×1
javascript ×1
jquery ×1
pagespeed ×1
powershell ×1
safari ×1
windows-7 ×1