对于我的知识,只应为网站的静态内容启用缓存,并且我们对动态页面使用no-cache.网站主页是最动态的页面,因为内容会定期更新.奇怪的是,我发现主要网站也为主页设置了一个短缓存最大值.谷歌设置3秒,stackoverflow 21秒.
更奇怪的是(对我来说),在分析性能时WebPageTest.org,它将主页视为静态内容,并期望缓存生命周期长.例如,您将收到一个FAILED通知,其中包含21秒的短缓存生命周期stackoverflow.com.点击这里.即使是2小时,您也会收到警告.
如何缓存主页面和其他动态页面?
使用 JSF 延迟加载 JavaScript 库(Richfaces、Primefaces、自己的东西)以加快页面加载的最佳方法是什么?
正如 Google PageSpeed 插件所说,建议在网站完全加载时解析 JavaScript。实现此目的的一种方法是将 JavaScript 加载放在<body>标签的末尾。另一种方法是将“defer”属性放在<script>标签上,<h:outputScript>正如我所见,这是用JSF的标签无法做到的。
那么,你会怎么做呢?
在公共站点上运行Google Page Speed时,我看到了该工具的一些建议,如下所示:
无损压缩http://g-ecx.images-amazon.com/images/G/01/electronics/detail-page/Acer-120x120._V137848950_.gi可以节省4.8KiB(减少26%),并且还提供了链接最佳化的内容。但是他们会以每个图片为基础。压缩后,我看到文件大小有明显减少。所以问题是:
我是否可以使用任何工具或Web服务,以便为它提供未压缩图像的目录(例如.gif),并返回包含所有压缩图像的图像目录?
我在这里找到了一个与SO有关的问题,但这并不是一个完全相同的问题。
谢谢阅读。
我使用文件名 logo.png 将具有 alpha 透明度的 PNG 图像上传到我的服务器,但是,当在页面上使用该图像并查看它的文件路径时,我得到:
http://example.com/i/300x300xlogo.png.pagespeed.ic.0A66xVq4G9.png
Run Code Online (Sandbox Code Playgroud)
该文件在服务器上无处可见。
我不知道它是否会影响它,但实际图像大小是 400 像素 x 400 像素,我在 HTML 中显示为 300 像素 x 300 像素。(不要问。)
可能是我的网络主机这样做吗?似乎在文件前面加上要显示的分辨率:300x300x并且还有那个奇怪的后缀:.pagespeed.ic.0A66xVq4G9.png
根据谷歌页面速度见解,例如此资源未设置到期时间(' (未指定到期时间) ')。但是,如果我查看我的 chrome 日志,我会看到
HTTP/1.1 200 OK
Date: Thu, 15 Nov 2012 23:27:40 GMT
Server: Apache
Accept-Ranges: bytes
Content-Length: 1323
Cache-Control: max-age=2692000, public
Expires: Sat, 15 Dec 2012 23:27:40 GMT
Keep-Alive: timeout=10, max=30
Connection: Keep-Alive
Content-Type: image/png
Run Code Online (Sandbox Code Playgroud)
据我所知,其中包含所有必要的标题。我目前正在使用此答案所建议的 htaccess 文件,尽管我尝试了一些手动变体和其他一些答案所建议的其他一些 htaccess 文件。有没有人知道我做错了什么,或者谷歌只是在惹我?
我的布局响应,所以我需要有比例缩小图像使用移动设备时放入模板,例如,span3中Boostrap可能占据整行这样的宽度将增加.
但在Google PageSpeed中,它被标记为一个问题.
有没有解决方法或更好的方法来处理这个问题?
通过头中的性能优化和非阻塞脚本,我一直在尝试异步加载 jquery 本身。
我遇到了一个jQuery Loader脚本,它异步加载 jquery,然后捕获和排队 jquery 文档就绪调用。这似乎在大部分时间都有效,但并非总是如此。
因此,如果加载程序在 x 秒内未完成,我创建了一个回退来加载本地 jquery 版本。回退有效,但不完全。有些部分可能有效,有些则无效。
加载 jquery 加载器脚本后,到目前为止在 head 中调用的脚本:
<script type="text/javascript">
function loadScript(url)
{
var head = document.getElementsByTagName('head')[0];
var script = document.createElement('script');
script.type = 'text/javascript';
script.src = url;
head.appendChild(script);
}
var fallback_timer = setTimeout(function() {
loadScript('/path/to/local/js/jquery.js');
},5000);
jQl.loadjQ('//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js',function({clearTimeout(fallback_timer);});
</script>
Run Code Online (Sandbox Code Playgroud)
问题:
任何有 jQuery Loader (jQl) 经验的人都可以帮助解决它经常失败的问题?
谁能告诉我为什么在失败的情况下,只有我的其他一些 js 脚本可以工作,而有些却一直失败?
我非常愿意使用其他一些插件/脚本/方向来异步加载 jquery 核心。
澄清一下,我不是在考虑使用 jQuery 异步加载脚本,而是在支持加载 jquery 依赖脚本的同时异步加载 jquery 本身。
我正在努力提高页面速度.我正在使用Critical Path CSS Generator工具来识别首字母CSS.然后我按照建议内联关键CSS ,并异步加载完整的css.
但是我最终得到了很多重复的CSS,这不是那么优化.所以我的问题是:
如何从main.css文件中删除关键的CSS?
提前致谢.
我正在尝试从加载Google网络字体导致的Google Pagespeed洞察中删除"脚本作为渲染阻止文件"错误.互联网告诉我使用Web Font Loader加载字体异步.我在页脚中放置了下面的一段javascript,字体加载得很好,但我的pagespeed洞察结果中仍然出现了渲染阻塞错误.
注意:字体渲染阻止错误仅在移动测试中显示,而不是在桌面上显示.
<script>
WebFontConfig = {
google: {
families: ['Archivo Narrow:300,400,700']
}
};
(function(d) {
var wf = d.createElement('script'), s = d.scripts[0];
wf.src = 'https://ajax.googleapis.com/ajax/libs/webfont/1.6.26/webfont.js';
wf.async = true;
s.parentNode.insertBefore(wf, s);
})(document);
</script>
Run Code Online (Sandbox Code Playgroud)
编辑:
尝试在关闭body标记之前添加脚本仍会导致渲染阻止文件错误:
<script>
WebFontConfig = {
google: {
families: ['Archivo Narrow:300,400,700']
}
};
(function(d) {
var wf = d.createElement('script'), s = d.scripts[0];
wf.src = 'https://ajax.googleapis.com/ajax/libs/webfont/1.6.26/webfont.js';
wf.async = true;
document.body.appendChild(wf);
})(document);
</script>
Run Code Online (Sandbox Code Playgroud)
我尝试构建具有最佳性能的Angular应用。
这个程序很简单:
一个页眉(带有两个链接),一个页脚,主页和关于页面。
该应用程序在这里可用
我使用Chrome的LightHouse查看指标。
使用默认指标:
Device: Mobile
Audits: All
Throttling: Simulated Slow 4G, 4X CPU Slowdown
Clear Storage
Run Code Online (Sandbox Code Playgroud)
在此之后,我使用Nginx代理通过gzip提供所有资产。
gzip on;
gzip_vary on;
gzip_proxied any;
gzip_types text/plain application/json text/xml text/css text/js text/javascript application/javascript image/svg+xml;
gzip_min_length 1000;
Run Code Online (Sandbox Code Playgroud)
当然,这还不错,但是我想看看Angular是否有可能使First Input Delay小于100ms。
如果我删除了清除存储参数,则会出现以下情况。
如果我不输入任何节流参数,我将处于下面。
但是我想使用这些参数将其设置为100ms以下。因此,当我在生产环境中构建产品时,可能会错过一些参数,该项目基于Angular SSR hero应用程序。
我看到当我呈现不带JS文件的网站时,只要没有javascript交互并且我在First输入交互中的时间为20毫秒,它仍然可以正常工作,因此也许有一种方法可以不同地加载JS脚本。它正在使用> = 1500ms的超时,但这不是一个好习惯。
我想知道Angular SSR是否可以使用<100ms的首次输入时间延迟来渲染,或者该堆栈是否实际无法渲染。
我了解LightHouse审核是基于您的计算机性能。我使用Pagespeed洞察力获得了几乎相同的结果 ,但由于服务器性能较弱,速度索引和第一个字节的到达时间除外。
Github项目:https : //github.com/mlescaudron/angular-app-optimized
还有要在本地测试的命令:
# Docker config for nginx with gzip compression
docker run -d --name web-server --network=host …Run Code Online (Sandbox Code Playgroud) pagespeed ×10
javascript ×3
asynchronous ×2
caching ×2
css ×2
html ×2
http-headers ×2
angular ×1
angular8 ×1
apache ×1
compression ×1
fonts ×1
html5 ×1
image ×1
imaging ×1
inline-code ×1
jquery ×1
jsf ×1
node.js ×1
optimization ×1
performance ×1