我正在使用 Uniserver 进行 PHP 网络开发,运行的是 Windows 8.1,并且在系统上安装了卡巴斯基。
我的大部分工作涉及 WordPress 网站的工作。
Wordpress 核心文件和一些 CSS 和 JavaScript 文件(例如 CDN JavaScript 或 Google 字体)需要互联网连接才能运行。
当网络速度慢甚至瘫痪时,我的页面需要很长时间才能加载,因为它们需要等待 Google 字体、CDN 资源等加载;有时甚至会超时。这很令人沮丧,因为我在开发过程中需要一次又一次地刷新。
但是,如果我完全关闭互联网(通过断开 WiFi),它会立即加载,因为没有互联网,并且页面不会等到超时发生。
通常在开发过程中,我希望立即加载页面,即使字体不起作用,CDN 文件也会恢复为本地文件。
但是,我无法关闭互联网,因为我一直需要谷歌。
有没有办法——通过防火墙或某些 Apache 配置——阻止网站上的互联网访问localhost
?这样,我的页面在开发时加载速度会更快吗?
答案1
以下是在 Chrome 网络浏览器中需要考虑的设置:
- 专门为开发创建新的个人资料(人员中的新人员)(这样您的设置就可以与其他个人资料分开),
- 禁用预取资源以更快地加载页面在隐私设置和任何其他可能产生不必要请求的选项中(例如预测服务,帮助解决导航错误的网络服务, ETC。),
或者基本上使用 Firefox,或者离线办公或减少 的network.http.connection-timeout
值about:config
。
以下是针对您的 WordPress 网站的建议:
- 如果可能的话,使用聚合和最小化 JS、CSS 文件,这样你就只需要一个请求,而不是几十个请求,
- 如果你正在使用远程 JS/CSS 文件,请考虑禁用处理这些文件的临时插件(Google Analytics),在本地重新上传它们,或者考虑使用本地替代方案(例如谷歌分析->打开 Web 分析),
- 仔细检查你的主要环境中是否确实没有任何缺失的请求(例如缺失的图片文件)——当你缺少图片时,它可能会触发 CMS 代码本身,从而减慢页面加载速度,
- 安装 PHP 缓存(例如 XCache)和 memcached 以进一步加快您的开发环境。
考虑使用代理:
- 使用简单的代理,你可以缩短超时时间(因为可能无法配置Chrome 中的超时),
- 使用透明代理,例如乌贼或者清漆(它将缓存远程文件并足够快地提供本地副本)。
其他建议:
如果您有特定的远程主机减慢了页面加载速度,您可以将其添加到
/etc/hosts
,例如:127.0.0.1 google-analytics.com ssl.google-analytics.com
这会将它们视为本地文件,无需进行任何更改。因此,要么提供它们的本地副本,要么它会更快超时。
配置防火墙以拒绝与特定主机的连接。
答案2
当互联网关闭时,Chrome 显然会使用离线缓存,这就是这些文件(可能是 CSS 等)浏览速度很快的原因。
一个想法:如果 Apache 网站位于 localhost 上,则使用除 localhost 之外的所有网站不存在的代理服务器启动 Chrome,参数如下:
--proxy-server="127.0.0.1:1234" --proxy-bypass-list:localhost
这将有效地阻止 Internet 访问,同时在本地主机上保持 Apache 处于打开状态,这与关闭 WiFi 的效果相同。然后 Chrome 有望返回到离线缓存中找到的缓存页面。因此,您可以在使用本地 Apache 网站时使用这些参数创建 Chrome 的快捷方式。
更多信息请参阅:
- 关于代理参数:Chromium 项目网络设置
- 关于离线缓存:Chrome 中的离线浏览秘密。
答案3
如果我理解你的问题没有错的话,那你就大错特错了。字体和脚本不会被 Apache 下载。网页只提供一次,字体和脚本的位置在服务器的响应中指定。浏览器负责获取响应中指定的文件。因此,阻止 Apache 访问互联网并不是解决方案。你必须更改页面的缓存策略。
答案4
有几个选项 - 在虚拟机上运行真正的开发环境 - 然后你只能在本地运行它。我想这不如在本地运行那么轻松
聪明的使用 adblock - 创建特定规则集来屏蔽您不想加载的资源。这可能在您自己的网站之外有效,但您可以随意关闭和打开它。ublock 是我目前选择的 adblock,并且有这个简洁的元素吸管选项
如果你想要一些只是影响您工作的网站,也许可以在您托管在 localhost 上的任何内容上使用用户端 js 脚本来转移这些元素 - tampermonkey/greasemonkey 可能会起作用。但不确定是否有人曾经这样做过。