我的应用在这里加载视频:https://core.arc.io/guanzo/VideoOfPeopleWalking.mp4
它使用Range请求标头以16Kb的块加载来自另一个来源的视频.我的服务器已将响应标头设置Access-Control-Max-Age
为10分钟,以防止出现多余的OPTIONS请求.
访问链接(它是一个HTML页面),打开网络工具,并观察获取16Kb块需要大约1秒.
现在选中"禁用缓存",您应该看到请求更快完成LOT,看起来有更多的并发请求.这与预期行为相反,因为每个请求都必须触发并等待OPTIONS请求.
如果启用了缓存,请求应该更快,不是吗?这里发生了什么?
以下是GIF格式的复制品:https://i.gyazo.com/ec5941829031cdd4dc684a3b53ec6c39.mp4
注意:块存储在IndexedDB中,因此如果刷新页面,则需要清除IndexedDB以强制触发所有请求.
编辑:筛选出任何firestore请求,我不确定为什么这些请求被解雇,但它应该与我的问题无关.
编辑:一个新的线索!https://i.gyazo.com/bd887533a42868f748564ccda4451881.png
选中"禁用缓存"后,Chrome将重复使用"连接ID"列中显示的相同TCP连接.表面上看,这应该可以更快地提出请求.
我似乎无法去抖(lodash)计算属性或vuex getter.去抖动的函数总是返回undefined.
https://jsfiddle.net/guanzo/yqk0jp1j/2/
HTML:
<div id="app">
<input v-model="text">
<div>computed: {{ textComputed }} </div>
<div>debounced: {{ textDebounced }} </div>
</div>
Run Code Online (Sandbox Code Playgroud)
JS:
new Vue({
el:'#app',
data:{
text:''
},
computed:{
textDebounced: _.debounce(function(){
return this.text
},500),
textComputed(){
return this.text
}
}
})
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用 AES-CTR 算法解密浏览器上的数据。WebCrypto API要求将计数器作为BufferSource传递。如何将计数器(数字)转换为预期输入(字节数组)?
我使用的是全零 IV,因此计数器从 0 开始。假设我正在尝试解密计数器 = 445566 的数据。如何将 445566 转换为 ArrayBuffer?
const key = // retrieve decryption key
const encrypted = // retrieve encrypted data
const iv = new ArrayBuffer(16)
// iv is all zeros. I need it to represent 445566, how?
const algo = {
name: 'AES-CTR',
counter: iv,
length: 128
}
const decrypted = await crypto.subtle.decrypt(algo, key, encrypted)
Run Code Online (Sandbox Code Playgroud)
编辑:在挖掘了一些加密库之后,我最终使用了这个。它似乎做了我想做的事,但不知道正确性、性能等。
function numberToArrayBuffer(value) {
const view = new DataView(new ArrayBuffer(16))
for (var index = …Run Code Online (Sandbox Code Playgroud) 我正在使用prerender-spa-plugin,效果很好!我很好奇vue如何设法检测预渲染.为什么不尝试像往常一样渲染其组件?
我试过寻找答案,但没有人在讨论vue如何实现这个目标.
如何批量删除存储桶?
这是我尝试过的.
def deleteAllBuckets():
batch = storage_client.batch()
with batch:
for bucket in storage_client.list_buckets():
bucket.delete()
Run Code Online (Sandbox Code Playgroud)
技术上它是有效的,因为桶被删除,但我不相信我发送一个批量请求.看起来我每桶发送一个请求.
将上述代码与Google Cloud Datastore中的批量请求进行比较
def deleteAllEntities():
query = datastore_client.query(kind="Charge")
queryIter = query.fetch()
batch = datastore_client.batch()
with batch:
for entity in queryIter:
batch.delete(entity.key)
Run Code Online (Sandbox Code Playgroud)
您可以看到我正在批处理对象上调用delete方法.使用存储代码,我在bucket对象上调用delete.不幸的是,云存储python API没有任何示例.
在承诺拒绝的情况下,如何确保仅将我创建的错误消息发送到客户端?
我抛出了一个自定义错误,效果很好。
return db.query(`SELECT * FROM events WHERE hostId = ? AND status = ?;`,[userId, ACTIVE_EVENT])
.then((results)=>{
if(results.length != 0)
throw new Error('You already have an active event')
})
Run Code Online (Sandbox Code Playgroud)
后来被抓了
.catch(function (err) {
console.log(err)
res.status(400).send(err.message)
});
Run Code Online (Sandbox Code Playgroud)
并向客户端发送一条不错的错误消息。
但有时我会从格式错误的数据库查询或其他什么情况中收到令人讨厌的错误,并且客户端会看到类似“ER_TRUNCATED_WRONG_VALUE:不正确的时间值:”的消息
我是新来的反应。我一直在尝试将 MEAN stack 应用程序转换为express 和reactjs 应用程序,但在正确输入构建文件时遇到问题。看起来我的服务器正在加载我的index.html 文件来代替我的js 文件。谁能帮我弄清楚为什么?
我在浏览器中的 main.js 中出现以下错误:Uncaught SyntaxError: Unexpected token <
我的文件构建到一个 build 文件夹中,该文件夹是我的 server.js 文件的同级文件。mywebsite (root) -src (f) -build (f) -server.js -public (f)
这是我的 server.js
require('./server/config/config');
// Get dependencies
const express = require('express');
const morgan = require('morgan');
const path = require('path');
const http = require('http');
const bodyParser = require('body-parser');
const api = require('./server/routes/api');
const compression = require('compression')
const app = express();
app.use(compression());
app.use(bodyParser.json());
app.use(bodyParser.urlencoded({ extended: false }));
app.use(morgan(':remote-addr - :remote-user [:date[clf]] ":method :url
HTTP/:http-version" …Run Code Online (Sandbox Code Playgroud) 我正在使用配置映射将 env 变量注入到我的容器中。一些变量是通过连接变量创建的,例如:
~/.env 文件
HELLO=hello
WORLD=world
HELLO_WORLD=${HELLO}_${WORLD}
Run Code Online (Sandbox Code Playgroud)
然后我创建配置映射
kubectl create configmap env-variables --from-env-file ~/.env
部署清单引用了配置映射。
apiVersion: apps/v1beta1
kind: Deployment
metadata:
name: my-app
spec:
template:
spec:
containers:
- name: my-image
image: us.gcr.io/my-image
envFrom:
- configMapRef:
name: env-variables
Run Code Online (Sandbox Code Playgroud)
当我执行到我正在运行的 Pod 并执行命令时
$ printenv HELLO_WORLD
我希望看到hello_world,但我看到了${HELLO}_${WORLD}。变量未展开,因此我的应用程序引用这些变量将获得未展开的值。
我如何确保变量得到扩展?
如果重要的话,我的图像使用的是高山。
我可以看到换行符“?” 用于 Chrome 开发者工具中的字符串
<br>??<br>Event Status: confirmed?<br>Event Description: Hog Day (Night )and Hog Day (Day)??Friday...
Run Code Online (Sandbox Code Playgroud)
如果我双击它并粘贴到记事本,则会保留换行符。
当我将字符串保存到这样的对象时,
var summary = el.find("summary").text();
var volunteerEvent = {title: title, summary: summary}
Run Code Online (Sandbox Code Playgroud)
并最终显示在页面上,
$('#volunteerEventDescription').empty().html(event.summary);
Run Code Online (Sandbox Code Playgroud)
换行符消失了,这是一大块文本。
我如何保留换行符?
这个问题来自我的OCD-ish性质.说我有这段代码.
boolean executed = false;
for(Object o : Collection){
if((o fulfills condition) && executed == false){
//do something
executed = true;
}
//other code
}
Run Code Online (Sandbox Code Playgroud)
如果规范只要求if语句执行一次,是否有更好的方法来跳过检查 if条件而不是设置executed为true?令我困扰的是,在if语句已经执行之后,循环需要检查if条件每个循环迭代.
执行布尔值的要点是防止if语句再次执行.我不知道这是可能的,但我希望把它一步,并跳过检查,如果有条件的一次executed是true.
编辑:我仍然需要在条件满足后完成循环.
我正在使用 socket.io 创建投票功能。套接字通过channelId. 每当房间中的任何插座发出vote事件时,我都会尝试将电流vote-list发送到该房间中的所有插座。
我的问题是,如果我在同一个房间里有套接字 A、B、C,则来自套接字 A 的投票对 B 和 C 可见(即on.('vote')调用B 和 C 的侦听器),但对 A 本身不可见。
我期望发生的是,如果套接字 A、B、C 位于同一个房间,并且 A 发出 a vote,vote则将调用所有套接字 A、B、C侦听器。
客户:
这些侦听器是在方法中定义的,但为了清楚起见,我将它们单独列出。定义了所有变量。
const socket = io('https://localhost:3001')
socket.emit('join-channel',{
channelId: payload.channelId,
senderId: socket.id
})
socket.emit('vote',{
senderId: socket.id,
channelId: state.channelId,
vote: payload.vote,
userId: state.userId
})
socket.on(`vote`, function (data) {
store.commit(MUTATIONS.SET_VOTES, data)
});
Run Code Online (Sandbox Code Playgroud)
服务器
module.exports = (app,server) => { var io = require('socket.io')(server);
io.on('connection', function (socket) {
socket.on('join-channel',data=>{ …Run Code Online (Sandbox Code Playgroud)