缓存服务器

discuz缓存机制

北战南征 提交于 2020-02-08 03:18:27
Discuz!的缓存同样分了主动缓存和被动缓存。从功能上来说,主动缓存一般用到管理员对全站的设置,等等需要手动更新的地方,这些地方的数据都有一个 特点,那就是它们的更新可能性很小,平时不需要自动更新;Discuz!的被动缓存,一般分布在诸如帖子内容显示,用户信息更新这些地方,这些地方的更新 基本上都是因为用户使用了某一特定的功能时所激发的。 在正常运行的Discuz!系统文件夹里面会有一个forumdata文件夹,这个是论坛记录和缓存文件的存放目录,一般这些文件都是自动生成的,在 forumdata/cache/里面存储的都是一些Discuz!的基本设置和一些常使用的值,这些值一般在系统初始化的时候就保存在$_DCACHE 全局变量中,在后面的操作中将可以简单地使用它们进行功能上的判断。 (1)主动缓存,也就是只在用户操作后台时,由Discuz!系统去删除原有缓存进行更新的缓存。它们普遍存在于forumdata/cache/目录 中,比如说/forumdata/cache/cache_settings.php保存了整个系统的核心设置,一般情况是不会更新的,只有后台修改了比 如站点名称等关键信息的时候才会去主动更新这个缓存文件。还有用于保存用户组和管理员组相关信息的两类缓存文件: /forumdata/cache/usergroup_’.intval($groupid).’.php

HTML5 本地缓存 window.localStorage

删除回忆录丶 提交于 2020-02-08 00:23:18
HTML5 LocalStorage 本地存储 说到本地存储,这玩意真是历尽千辛万苦才走到 HTML5 这一步,之前的历史大概如下图所示: 最早的 Cookies 自然是大家都知道,问题主要就是太小,大概也就 4KB 的样子,而且 IE6 只支持每个域名 20 个 cookies ,太少了。优势就是大家都支持,而且支持得还蛮好。很早以前那些禁用 cookies 的用户也都慢慢的不存在了,就好像以前禁用 javascript 的用户不存在了一样。 userData 是 IE 的东西,垃圾。现在用的最多的是 Flash 吧,空间是 Cookie 的 25 倍,基本够用。再之后 Google 推出了 Gears ,虽然没有限制,但不爽的地方就是要装额外的插件(没具体研究过)。到了 HTML5 把这些都统一了,官方建议是每个网站 5MB ,非常大了,就存些字符串,足够了。比较诡异的是居然所有支持的浏览器目前都采用的 5MB ,尽管有一些浏览器可以让用户设置,但对于网页制作者来说,目前的形势就 5MB 来考虑是比较妥当的。 支持的情况如上图, IE 在 8.0 的时候就支持了,非常出人意料。不过需要注意的是, IE 、 Firefox 测试的时候需要把文件上传到服务器上(或者 localhost ),直接点开本地的 HTML 文件,是不行的。 首先自然是检测浏览器是否支持本地存储。在

Redis 面试题汇总

本小妞迷上赌 提交于 2020-02-07 15:18:32
Redis 面试题汇总 1.Redis 使用场景有哪些? 答:Redis 使用场景如下: 记录帖子点赞数、点击数、评论数 缓存近期热帖 缓存文章详情信息 记录用户会话信息 2.Redis 有哪些功能? 答:Redis 功能如下: 数据缓存功能 分布式锁的功能 支持数据持久化 支持事务 支持消息队列 3.Redis 支持哪些数据类型? 答:Redis 支持的数据类型如下: String 字符串 List 列表 Set 无序集合 ZSet 有序集合 Hash 哈希类型 4.Redis 相比 Memcached 有哪些优势? 答:Redis 相比 Memcached 优势如下: Memcached 所有的值均是简单的字符串,Redis 支持更为丰富的数据类型 Redis 的速度比 Memcached 要快 Redis 可以持久化 Redis 可以设置过期时间 Redis 支持主从同步 5.Redis 支持哪些淘汰策略? 答:Redis 淘汰策略如下: noeviction:禁止淘汰数据; allkeys-lru:尝试回收最少使用的键,使得新添加的数据有空间存放; volatile-lru:尝试回收最少使用的键,但仅限于在过期集合的键,使得新添加的数据有空间存放; allkeys-random:回收随机的键使得新添加的数据有空间存放; volatile-random

HTTP --meta详解

谁说我不能喝 提交于 2020-02-07 05:46:03
meta是html语言head区的一个辅助性标签。也许你认为这些代码可有可无。其实如果你能够用好meta标签,会给你带来意想不到的效果,meta标签的作用有:搜索引擎优化(SEO),定义页面使用语言,自动刷新并指向新的页面,实现网页转换时的动态效果,控制页面缓冲,网页定级评价,控制网页显示的窗口等! meta标签的组成:meta标签共有两个属性,它们分别是http-equiv属性和name属性,不同的属性又有不同的参数值,这些不同的参数值就实现了不同的网页功能。 1、name属性 name属性主要用于描述网页,与之对应的属性值为content,content中的内容主要是便于搜索引擎机器人查找信息和分类信息用的。 meta标签的name属性语法格式是: <metaname="参数"content="具体的参数值">。 其中name属性主要有以下几种参数:  A、Keywords(关键字)  说明:keywords用来告诉搜索引擎你网页的关键字是什么。 举例:<metaname="keywords"content="science,education,culture,politics,ecnomics,relationships,entertaiment,human"> B、description(网站内容描述) 说明:description用来告诉搜索引擎你的网站主要内容。 举例:

你不知道的meta标签

扶醉桌前 提交于 2020-02-07 02:22:01
前言   meta标签可以用来做seo优化、指定移动端viewport的展现形式、设置http请求、告诉浏览器缓存静态资源的模式等等。今天整理一下使用meta标签实用的,常见的场景。 meta标签的组成   meta标签的作用取决于我们为它定义的属性和属性值。   name:把content属性连接到某个名称。   content:定义与 http-equiv 或 name 属性相关的信息。   http-equiv:把content属性关联到http头部。   charset:定义文档的字符编码。 指定浏览器缓存模式   这里有个坑。在项目开发阶段后台接口的数据结构经常会发生变化,但接口名称不变。浏览器会缓存之前请求过来的数据,新的请求接口名称不变的话,浏览器就会使用缓存。有一次我修改同一段代码无数次,页面上的显示就是不变。然后开始疯狂检查代码,看了一遍又一遍,纠结两个多小时,才发现是浏览器缓存在做妖。   http-equiv的值中的cache-control指定请求和响应的缓存机制,在content中指定具体描述   》no-cache:先发送请求,与服务器确认该资源是否被更改,如未被更改,则使用缓存。   》no-store:不准缓存,每次都去服务器,下载完整的响应。开发测试时经常刷着就页面就不更了。   》public:缓存所有响应。    》private

互联网公司的架构演进过程

廉价感情. 提交于 2020-02-07 02:04:49
单体应用架构 从单体应用架构发展到SOA架构,再到微服务架构,应用架构经历了多年的不断演进。 初生 ​ 在Web应用程序发展的早期,大部分的Web工程是将所有的功能模块打包到一起部署和运行。 在单体应用中,所有这些模块都集成在一起,这样的系统架构就叫做单体应用架构。 单体应用是最早的应用形态,开发和部署都很简单。 典型的技术是LAMP,即Linux、Apache、Mysql、PHP,但是PHP的性能并不是很好,随着网站业务的发展,越来越多的用户访问,这种架构的性能越来越差,越来越多的数据导致储存空间不足。这时候该怎么办呢?将应用服务与数据服务分离。 应用服务与数据服务分离 在扩展的过程中,应用服务器需要更快更强大的CPU(处理大量的业务逻辑),数据库服务器需要更快的硬盘和更大的内存(快速磁盘检索和数据缓存),文件服务器需要更大的硬盘(存储大量用户上传的文件)。 不同的服务器承担不同的服务角色,提高了并发处理能力,扩大了数据存储空间,整个系统的性能会有较大提升。 可是随着用户增多,网站再次面临挑战。数据库压力太大导致访问延迟,进而影响整个网站的性能,用户体验感极差!这时候该怎么办呢?使用缓存提高性能。 使用缓存改善性能 使用本地缓存速度会极快,但是空间有限,使用远程分布式缓存速度稍慢(相对本地缓存来说稍慢,但也很快了),但是可以按需扩展。常用的缓存组件是Redis、Memcache。

浏览器缓存相关的知识点

大城市里の小女人 提交于 2020-02-07 01:28:54
浏览器的缓存能够极大程度的提高页面的性能,提高用户的使用体验。 当浏览器中第一次输入一个URL访问服务器,服务器发送资源,并带上一个ETag(当前资源的唯一标识符),以及Last-Modified(用来标记当前资源的最后修改时间) 浏览器请求到的资源进行缓存,当浏览器第二次请求的时候,根据浏览器的缓存机制来判断,缓存是否过期,如未过期,直接使用缓存的资源,如过期则向服务器重新请求资源。 1.1 浏览器缓存的控制 1.1.1 可以通过设置meta标签,设置当前页面不被缓存,每次访问都需要去服务器拉取 <META HTTP-EQUIV="Pragma" CONTENT="no-cache"> 1.1.2 与缓存有关系的HTTP消息报头 Cache-Control 响应信息 Cache-Control有很多值,max-age 为缓存最大的有效时间 no-cache 获取缓存前要向服务器请求,资源是否是最新的 no-store 禁止缓存 Expries 用来指定资源的到期时间 ,优先级低于Cache-Control Last-modified & If-modified-since 浏览器再次请求的时候,会在请求信息中带上 I f-modified-since 询问 Last-modified 时间点之前,资源是否被修改过,如果没有被修改则返回304,使用缓存,如果修改过

nginx 性能优化

瘦欲@ 提交于 2020-02-06 16:39:11
nginx 性能优化 1,Nginx运行的工作进程 Nginx运行工作进程个数一般设置为CPU的核心数,或者核心数*2.我们可以使用 lscpu 或者 cat /proc/cpuinfo 来查看cpu的核心数 2,Nginx运行CPU亲和性 配置如下 2核配置 worker_processes 2; worker_cpu_affinity 01 10; 4核配置: worker_processes 4; worker_cpu_affinity 0001 0010 0100 1000; 8核: worker_processes 8; worker_cpu_affinity 00000001 00000010 00000100 00001000 00010000 00100000 01000000 10000000; worker_processes最多开启8个,8个以上性能就不会在提升了,而且容易出问题。 3,Nginx最大打开文件数 worker_rlimit_nofile 65535; 但是我们一般不会这样设置,我们会更改系统文件句柄(最大打开数) 文件资源限制的配置可以在/etc/security/limits.conf设置,针对root/user等各个用户或者*代表所有用户来设置 * soft nofile 65535 * hard nofile 65535 4,Nginx

Nginx模块

你说的曾经没有我的故事 提交于 2020-02-05 15:02:40
Nginx模块 ngx_http_core_module 模块 帮助文档: http://nginx.org/en/docs/http/ngx_http_core_module.html 与套接字相关的配置: 1 、server { ... } 配置一个虚拟主机 server { listen address[:PORT]|PORT; server_name SERVER_NAME; root /PATH/TO/DOCUMENT_ROOT; } 2 、listen PORT|address[:port]|unix:/PATH/TO/SOCKET_FILE listen address[:port] [default_server] [ssl] [http2 | spdy][backlog=number] [rcvbuf=size] [sndbuf=size] default_server 设定为默认虚拟主机 ssl 限制仅能够通过ssl 连接提供服务 backlog=number 超过并发连接数后,新请求进入后援队列的长度 rcvbuf=size 接收缓冲区大小 sndbuf=size 发送缓冲区大小 注意: (1) 基于port; ; listen PORT; 指令监听在不同的端口 (2) 基于ip 的虚拟主机 listen IP:PORT; IP 地址不同 (3)

Java系统高并发之Redis后端缓存优化

三世轮回 提交于 2020-02-05 07:26:18
一:前端优化 暴露接口,按钮防重复(点击一次按钮后就变成禁用,禁止重复提交) 采用CDN存储静态化的页面和一些静态资源(css,js等) 二:Redis后端缓存优化 Redis 是完全开源免费的,遵守BSD协议,是一个高性能的key-value数据库。 Redis支持数据的持久化,可以将内存中的数据保存在磁盘中,重启的时候可以再次加载进行使用。 性能极高 – Redis能读的速度是110000次/s,写的速度是81000次/s 。 原子 – Redis的所有操作都是原子性的,意思就是要么成功执行要么失败完全不执行。 利用Redis可以减轻MySQL服务器的压力,减少了跟数据库服务器的通信次数。 2.1 Redis服务端下载以及安装 详细步骤参考: Redis服务端安装教程 注:以下pom.xml为Maven项目配置文件,若非Maven项目,百度相应名称包导入即可。 2.2 在pom.xml中配置Redis客户端 <!-- redis客户端:Jedis --> <dependency> <groupId>redis.clients</groupId> <artifactId>jedis</artifactId> <version>2.7.3</version> </dependency> 由于Jedis并没有实现内部序列化操作,而Java内置的序列化机制性能又不高