我使用jquery的ajax方法从服务器动态加载一些html片段,并将片段插入div.在代码片段中有一些<script>外部脚本标签.
我在制作ajax请求时在Chrome工具栏中查看了网络活动,并发现脚本标记的GET请求附加了类似的内容?_=1234567890.我还注意到GET请求的发起者是jquery.我知道jquery为AJAX请求执行此操作以避免使用缓存版本,但我希望缓存脚本.
让我感到惊讶的是,<script>标签是由jquery用ajax获取的.将<script>标记插入DOM时,浏览器是否应负责加载和执行标记?为什么jQuery在这里采取行动?
如果我跳过jquery并使用普通的js将<script>标签附加到DOM,浏览器将加载并解析它,对吧?为什么浏览器不执行此操作并让jquery接管?
==============代码=============
用于加载html代码段的代码:
var url = "/"+modulename+"/settings/"+this.selectedProduct.id;
$.get(url, null, function(snippet){
$("div#content").empty().html(snippet);
}
Run Code Online (Sandbox Code Playgroud)
html片段:
<script type='text/javascript' src="http://www.staticcdn.org/somelib.js"></script>
<script>
<!--some html rendering code that depends on somelib-->
</script>
Run Code Online (Sandbox Code Playgroud) 我想将Django应用程序部署到云计算环境,但我担心源代码安全性.我可以只在那里部署已编译的.pyc文件吗?根据官方python doc,pyc文件"适度难以进行逆向工程".
采用这种方法有哪些优缺点?这是标准做法吗?
我没有使用AWS,我只想说我在一个根本不信任云计算的国家......
Django 的内置cached_db 会话允许我使用memcached 来存储会话数据,并写入数据库以实现持久化。
虽然有些应用程序使用 Redis 作为会话存储(例如 Instagram)。
这些解决方案的优缺点是什么?
ps我不是问memcached和redis的比较,这个问题是Memcached vs. Redis?已经提供了非常好的答案。我问的是在会话系统的情况下哪一个更好。
在我们的Web应用程序中,我们有一个包含许多组件的Web页面,每个组件都使用来自DB的数据进行渲染,服务器端缓存用于存储生成的组件以供将来请求使用.我们还为整个页面维护了一个全局"最后修改"的时间戳,这是此Web上任何数据(在数据库中)的最后一次更改,如果浏览器缓存具有新版本,我们将返回304 HTTP响应.
总之,我们使用服务器端缓存和客户端缓存来提高性能.
在我们考虑部署新代码之前,这一切都很好.当部署新代码(比如html)时,不仅客户端缓存无效,还必须清除服务器端缓存.我们必须将最后修改的时间设置为代码部署时间,并清除服务器端缓存中的所有内容.如果我们定期部署代码,这是不太理想的.由于页面数据库中的数据不会定期更改,因此我们希望缓存能够长时间运行.但是部署新代码却违背了我们的目的.
在这种情况下我们该怎么做?这里有"行业最佳实践"吗?
我希望我的 Django 应用程序中的一些代码在服务器启动时只执行一次,而不是每个请求。
具体来说,我想将一些数据库表加载到内存中。这些表包含一些不会随请求更改的“元数据”。像这样:
ProductTypesData = None;
def loadProductTypesData():
productTypes = ProductType.objects.all();
for ptype in productTypes:
ptype_data = {
"id":ptype.id,
"name": ptype.name,
"description":ptype.desc
};
ProductTypesData.append(ptype_data);
loadProductTypesData();
Run Code Online (Sandbox Code Playgroud)
我应该把这段代码放在哪里?其他关于django初始化的Q/A建议放在urls.py中。但是在 urls.py 中导入模型对我来说似乎不合逻辑。
我可以将代码放在models.py中吗?它是否只执行一次(如果在 django start 上执行是可以接受的)?
我知道对文本字段进行索引可以帮助进行搜索like 'keyword%'.
但是,是否有任何跨数据库索引可以改善全文搜索like '%keyword%'?
通常,对于少于1000个字符的文本字段,like %keyword%查询的性能何时变得对Web请求不可接受?说当表达到10K行?
我在标准库中阅读python的随机模块.令我惊讶的是,当我设置种子并产生一些随机数时:
random.seed(1)
for i in range(5):
print random.random()
Run Code Online (Sandbox Code Playgroud)
产生的数字与文章中的样本完全相同.我认为可以肯定地说,当种子设置时,算法是确定性的.
当种子未设置时,标准库种子用time.time().现在假设一个在线服务用于random.random()生成验证码,黑客可以使用相同的随机生成器轻松地重现验证码吗?
我是否担心太多,或者这是一个真正的漏洞?
我们使用AWS cloudformation服务来初始化我们的堆栈,并设置自动扩展服务以在负载上升时启动新的应用服务器.
我的理解是Auto Scaling只能将预定义的AMI作为新实例启动.这些实例可能与其他正在运行的实例不同,因为我们可能已更新在这些实例上部署的包/源代码.
如何使新实例更新?我是否应该在每次向正在运行的实例部署新内容时更新AMI?或者无论如何在自动缩放时触发新实例(Opsworks)上的自动部署?
我是AWS新手,所以请原谅我,如果我的问题很简陋的话.
在我的应用程序中,我发现send()TCP 连接上的调用偶尔会被阻止。每当这种情况发生时,TCP 连接的 Recv-Q 从netstat输出中会非常高:
tcp 314238 0 10.8.8.21:47302 10.8.8.11:5672 ESTABLISHED
tcp 313276 0 10.8.8.21:47294 10.8.8.11:5672 ESTABLISHED
Run Code Online (Sandbox Code Playgroud)
什么可能导致 TCP 连接的接收缓冲区被填满?它如何导致我的send()呼叫无限期挂起?
ps 这可能相关,也可能不相关,这个 TCP 连接位于我的应用程序和 RabbitMQ 服务器之间。
在 golang 中,当我导入一个模块时,它的 init() 被执行(在我假设的 main() 之前?),这个函数中可能会产生一些错误。如何捕获这些错误并在我自己的代码中处理它们?