Day: 2022年11月20日

在 Progressive Web Apps 中添加自定义安装按钮

前几天,我正在寻找一种在我的记事本应用程序中添加自定义“安装”按钮的方法,该应用程序本质上是一个渐进式 Web 应用程序 (PWA)

介绍

为了给你一个入门,当你打开一个 PWA 时,一个beforeinstallprompt事件会在支持的浏览器中被触发。触发此事件时,浏览器会像这样向用户显示安装弹出窗口。

原生 PWA 弹窗

然后,用户可以通过点击“安装”按钮或关闭弹出窗口来选择安装应用程序。那么,如果您想在用户关闭安装弹出窗口后再次提醒他们安装您的 PWA 怎么办?

为了解决这个问题,你可以做的是在你的应用程序本身的某个地方显示一个自定义的“安装”按钮,这将触发用户安装你的 PWA。

这也正是我在记事本PWA 中所做的。我是如何做到这一点的?继续阅读以了解如何操作。

您可能喜欢:检查 PWA 是否作为独立应用程序打开

JavaScript 中内存泄漏的原因以及如何避免它们

当涉及到“老式”网页时,对内存管理的关注不足通常不会产生戏剧性的后果。当用户浏览链接并加载新页面时,每次加载都会从内存中删除页面信息。

SPA(单页应用程序)的兴起促使我们更加关注与内存相关的 JavaScript 编码实践。如果应用程序开始逐渐使用越来越多的内存,那会严重影响性能甚至导致浏览器的选项卡崩溃。

在本文中,我们将探讨导致 JavaScript 内存泄漏的编程模式,并解释如何改进内存管理。

H264编码profile & level控制

背景知识

先科普一下profile&level。(这里讨论最常用的H264)
H.264有四种画质级别,分别是baseline, extended, main, high:
1、Baseline Profile:基本画质。支持I/P 帧,只支持无交错(Progressive)和CAVLC;
2、Extended profile:进阶画质。支持I/P/B/SP/SI 帧,只支持无交错(Progressive)和CAVLC;(用的少)
3、Main profile:主流画质。提供I/P/B 帧,支持无交错(Progressive)和交错(Interlaced), …

10 个最好的 WordPress 缓存插件来加速网站

如果加载时间超过三秒,57% 的访问者将离开您的网站——显然,网站速度对于用户体验至关重要。

安装 WordPress 缓存插件的站点所有者

有几种简单的方法可以加速您的 WordPress 站点,例如优化图像、购买CDN 服务以及本文的主题,即 WordPress 缓存插件。

如果你想要一种简单快捷的方法来优化你的 WordPress 网站的速度,数据缓存是首先要看的地方之一。首先,让我们定义什么是缓存及其重要性。然后,我们将探索一些可以为您简化甚至自动化该过程的插件。

缓慢的 WordPress 管理后台?为什么会发生,以及如何修复它

处理缓慢的 WordPress 管理仪表板?

当您尝试管理您的 WordPress 网站时,感觉自己在泥泞中跋涉从来都不是一件有趣的事情,因此我们将帮助您摆脱困境并进入加载速度更快的 WordPress 管理仪表板。

为实现这一点,我们将快速分析您的 WordPress 管理仪表板可能运行缓慢的一些原因。然后,我们通过提示来帮助您解决问题并让您的 WordPress 管理员再次快速加载。

尝试使用 WebTransport

WebTransport 是一种新的 API,提供低延迟、双向、客户端-服务器消息传递。了解有关其用例的更多信息,以及如何就实施的未来提供反馈。

 

Javascript垃圾收集以及内存泄漏

这几天在写代码的时候一直想到一个问题,内存的问题,这个问题解决不了,始终不能安安心心写代码(我这里又又又定义了一个变量,闭包能访问到它,但是我在闭包函数中并没有访问他,闭包一直存在,不占内存吗?之前也一直有一个问题,不解决也是寝食难安,见事件处理函数中this的指向以及函数上下文的继承),以前写c,c++的时候,似乎每次全局作用域有数组我不用了,我就手动给它删除了(局部变量出了作用域就自行销毁),而写javascript的时候意识到,虽然避免使用了全局变量,可是因为闭包的存在难道不会导致内存的泄漏(只要闭包函数存在,就始终拥有对外部函数的作用域的访问权限)?
之前第一次看《javascript高级程序设计》的时候,记得有一节是说垃圾回收机制,当时连对象,应用,原型什么的都没有搞清楚,那章基本上也就跳过了,现在回想起来,似乎我很少在js中对其内存进行管理,除了我不想要某个属性了,会delete一下,别的都没有进行管理,那么Js不需要内存管理吗?不会发生内存泄漏?

js垃圾回收机制

Js有自己的垃圾回收机制,会帮助开发者管理内存。回收机制会查找应用无法到达的内存。这其实跟我们的初衷是有一些细微但是很重要的差别,该机制是寻找无法到达的内存,而我们想要的其实是寻找我不会再使用的内存。一块内存(一个变量,引用),只有开发者我们自己才知道会不会再用到,而检测机制,只能检测到程序中别的地方不会再调用的内存(也正常,要是检测机制能检测到那个变量我不用了才奇怪了)。所以,如果我们不使用某个变量了,让程序别的地方都引用不到它,垃圾回收机制就能够发现并处理它,而内存泄漏的根本原因就是我们不打算继续使用的内存还存在着引用,从程序别的地方可以访问到它,就不会对其进行释放。
综上可以这么说:js的回收机制的关键是理解可到达的概念。从根(window)出发,能够到达的变量都会留在内存中,只有无法到达的节点(变量,函数)才会被回收机制回收。从而完成内存的释放。而引起内存泄漏的根本原因就是存在不想要的引用,使得不需要的内存能够从根节点到达,从而无法释放该内存。

js回收机制示例

普通对象回收机制

如下代码:

function Menu(title) {
  this.title = title
  this.elem = document.getElementById('id')
}
 
var menu = new Menu('My 

请求时浏览器缓存 from memory cache 和 from disk cache 的依据是什么,哪些数据什么时候存放在 Memory Cache 和 Disk Cache中

No description provided.

@lvtraveler
Author

lvtraveler commented on Mar 18, 2019

参考:【缓存】HTML5缓存的那些事

在 Mac 上使用 Homebrew 升级到 PHP 8.2

使用 Homebrew 升级

首先确保 brew 是最新的:

brew update

接下来,升级PHP。您可以使用内置的 php 配方,但我建议使用shivammathur/homebrew-php

#正常升级

brew upgrade php

#升级用shivammathur/homebrew-php

brew tap shivammathur/php
brew install shivammathur/php/php@8.2

要在版本之间切换,请使用以下命令:

brew link --overwrite --force php@8.2

您可以在存储库中阅读更多内容。

#下一步

通过运行检查当前版本php -v