问题标签 [web-optimization]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
4 回答
2503 浏览

web-optimization - 在网页上混合安全和非安全内容——这是个好主意吗?

我正在尝试想办法加快我的安全网站。因为有很多 CSS 图像需要加载,它会降低网站速度,因为浏览器不会将安全资源缓存到磁盘上,并且必须比实际需要更频繁地检索。

我正在考虑的一件事可能是将基于样式的图像和 javascript 库移动到非安全子域,以便浏览器可以缓存这些不构成安全风险的资源(渐变不是完全敏感的材料)。

我想看看其他人对做这样的事情有什么想法。这是一个可行的想法还是我应该以其他方式优化我的网站,比如使用 CSS sprite-maps 等来减少请求和带宽?

0 投票
10 回答
1473 浏览

javascript - JavaScript 在 Firefox 3 中异步加载(根据 Firebug)?

我正在尝试分析一个网站的性能,我相当有信心在页面上加载 JavaScript 文件会减慢该网站的速度。

页面上多次包含相同的 JavaScript 文件,并且<script />标签分散在整个页面中,而不是包含在底部

正如我所怀疑的,在查看 FireBug 的“Net”选项卡时,大多数时间(不是全部)在加载 JavaScript 时,没有请求其他文件。浏览器等待 JavaScript 完成加载。

不过也有一些例外。在少数情况下会加载 JavaScript,但与此同时,其他资源似乎也被加载,例如其他 JavaScript 文件和图像。

我一直认为 JavaScript 会阻止页面上其他资源的加载。我的想法是否不正确,或者这种行为是否因浏览器或浏览器版本而异?

更新:
对于那些已经解释加载脚本如何阻止加载其他资源的人,我已经意识到这一点。我的问题是为什么脚本不会阻止其他资源的加载。Firebug 显示某些 JavaScript 文件不会阻止加载其他资源。我想知道为什么会发生这种情况。

0 投票
2 回答
1685 浏览

performance - 优化运行 IIS7 以仅提供静态文件的 Windows Server 2008 机器的最佳方法是什么?

我想让我们的 Web 应用程序从运行 Windows Server 2008 和 IIS7 的静态文件服务器中提取静态内容(css、js、图像)。

为了这个单一的目的,你会对服务器进行什么样的优化?

(Machine.config 更改?Web.config 更改?特殊的 IIS7 设置或模块?什么?)

0 投票
2 回答
210 浏览

web-optimization - 推荐的网络文件大小

我正在使用 YSlow 和 Page Speed 建议进行 Web 性能优化,但在文件大小方面却没有说明任何内容。

有谁知道我在哪里可以获得某些文件类型的最大大小的一些建议?例如图像不应大于 XXX KB 或类似的东西。但我需要可靠的来源,而不仅仅是建议。我的意思是 XXX 做了一些研究,他们推荐这个或那个。

0 投票
3 回答
6192 浏览

c# - 在代码中设置远期过期标头 - ASP.NET

有没有一种方法可以使用 ASP.NET 以编程方式在代码中设置 Expires 标头?具体来说,我需要在整个文件夹和所有子文件夹上设置它,并且该文件夹仅包含静态文件(JavaScript、CSS、图像等)而不包含 aspx 文件,所以我不能只在 aspx 代码中添加一些代码-page_load 后面。

我通常可以直接在 IIS 中设置它。但是服务器被客户端锁定(我只能通过 FTP 访问 Web 应用程序目录以进行部署),并且让客户端在 IIS 上设置 Expires 标头需要一个冰河时代(它是一个公共部门/政府站点)。

根据雅虎的建议,我这样做是出于前端优化的原因http://developer.yahoo.com/performance/rules.html#expires

更新:我试过创建一个 HttpModule ......

虽然这看起来行不通。我在代码上放置了一个断点,它可以正常运行。但是,当我在 Firefox 中分析原始 HTTP 标头信息时,没有设置 expires 值。请注意,我正在使用 BeginRequest,但我也尝试过连接 PostReleaseRequestState 和 PreSendRequestHeaders,但它们似乎也不起作用。有任何想法吗?

更新 2:好的,因为我正在运行 IIS6,HttpModules 不会运行静态文件,只能运行动态文件(*.aspx 等)。感谢 RickNZ 的帮助,我想出了以下 IHttpModule:

...而且它似乎有效,但仅在 Visual Studio 的内置 Web 服务器和 IIS7 中(在集成管道模式下)。一位工作同事提到在 IIS6 上设置通配符映射以让 HttpModules 处理静态文件,但如果我可以访问 IIS6,我可以直接设置 Far-Future Expires 标头,而不用打扰这个 HttpModule。那好吧!

0 投票
1 回答
383 浏览

web - Google Web Optimizer -- 多久才能赢得组合?

我已经在Google Web Optimizer中运行了六周的 A/B 测试,但仍然看不到尽头。谷歌仍在说:“我们还没有收集到足够的数据来显示任何显着的结果。当我们收集更多的数据时,我们应该能够向你展示一个成功的组合。”

有什么方法可以说明谷歌离下定决心有多近?(有谁知道它使用什么算法来决定是否有任何“高置信度赢家”?)

根据谷歌帮助文档:

有时我们只需要更多的数据就能达到高置信度。一个经过测试的组合通常需要大约 200 次转换,我们才能确定地判断其性能。

但目前我们所有的转换都有超过 200 次对话:

230 / 4061(原始)
223 / 3937(变体 1)
205 / 3984(变体 2)
205 / 4007(变体 3)

还要跑多久??

谢谢你的帮助。

0 投票
9 回答
59985 浏览

css - 如何在 CSS 中使用 3 位颜色代码而不是 6 位颜色代码?

我最近浏览了我的 CSS 文件,并将我所有的六位数十六进制代码转换为简单的三位数代码(例如,我的#FDFEFF缩写为#FFF)。

它呈现几乎与以前完全相同的颜色,在我看来,中间部分相当无用,删除它们在我的 CSS 文件中节省了整整 300 个字节。

您使用哪个版本有关系吗?我很少遇到只使用三位数代码的网站(或者我想我从来没有遇到过使用三位数代码的网站)。使用三位数代码而不是六位数代码仍然完全有效,还是我们应该使用完整的六位数代码?

0 投票
1 回答
447 浏览

web - Google Web Optimizer(A/B 测试)为什么没有明显的赢家?

我之前曾问过获胜组合需要多长时间才能出现在Google 的 Web Optimizer上,但现在我在 A/B 测试中遇到了另一个奇怪的问题:

在过去的两天里,谷歌宣布有一个“高信心赢家”,它有98.5%的机会以27.4%的优势击败原始版本。伟大的!

替代文字

我决定让它运行以确保绝对确定,但发生了一些奇怪的事情:今天谷歌说他们“还没有收集到足够的数据来显示任何重要的结果”(如下所示)。当然,数字略有变化,但仍然非常高:96.6%的几率比原版高出22%

替代文字

那么,为什么谷歌现在不太确定呢?

它是如何从具有统计意义的“高信心”获胜者转变为没有足够的数据来计算的呢?我的数字太小,谷歌无法确定还是什么?

感谢您的任何见解!

0 投票
3 回答
3936 浏览

cross-browser - 如何在后台预加载 JavaScript 和 CSS 文件,以便在用户进入主页时将它们准备好在浏览器缓存中?

我想在登陆转换后从登陆页面预加载一个 JS 文件和一个 CSS 文件以优化主站点加载。我一直在寻找有关此的信息,最后尝试使用以下方法完成此操作:

Firefox 如此出色,但对于 Chrome,XHR 调用似乎缓存在与 css 和 js 文件不同的缓存中。我们不使用 JQuery,着陆页必须是轻量级的(负载更少,转化率更高)。

您对解决原始问题的另一种方法有什么建议吗?(预加载组件)

你知道如何让 Chrome 缓存这些请求吗?

0 投票
1 回答
41 浏览

web-applications - 这个页面缓存系统合理吗?

我正在开发一个基于网络的系统,用户将在其中点击很多页面。因为它们经常会返回特定页面(例如,书籍概览),所以我想实现一些缓存机制来加快速度。

在显示用户的内容之前,我会将内容的 MD5 校验和连同用户的 ID 和页面的 URL 一起存储在数据库中。

下次他登录时,我会检查是否有包含 URL 和 UserID 的条目。如果有,我将存储的 MD5 与我新计算的 MD5 进行比较,如果 MD5 相等,我发送一个“未更改”标题,这样浏览器就不必下载整个页面。