浏览器缓存

Django之中间件、缓存以及信号

若如初见. 提交于 2019-12-16 17:43:11
Django之中间件 中间件执行流程 我们从浏览器发出一个请求 Request,得到一个响应后的内容 HttpResponse ,这个请求传递到 Django的过程如下: 也就是说,每一个请求都是先通过中间件中的 process_request 函数,这个函数返回 None 或者 HttpResponse 对象,如果返回前者,继续处理其它中间件,如果返回一个 HttpResponse,就处理中止,返回到网页上。 中间件中可以定义4个方法,分别是: process_request(self,request) 发送请求 process_view(self, request, callback, callback_args, callback_kwargs) 执行完 request 预处理函数并确定待执行的 view 之后,但在 view 函数实际执行之前。 process_template_response(self,request,response) process_exception(self, request, exception) 收集错误信息 process_response(self, request, response) 必须返回 HttpResponse 对象. 这个 response 对象可以是传入函数的那一个原始对象(通常已被修改),也可以是全新生成的。

Nginx配置文件nginx.conf中文详解,供自己看

此生再无相见时 提交于 2019-12-16 17:23:58
######Nginx配置文件nginx.conf中文详解##### #定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数。 worker_processes 8; #全局错误日志定义类型,[ debug | info | notice | warn | error | crit ] error_log /usr/local/nginx/logs/error.log info; #进程pid文件 pid /usr/local/nginx/logs/nginx.pid; #指定进程可以打开的最大描述符:数目 #工作模式与连接数上限 #这个指令是指当一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n 的值保持一致。 #现在在linux 2.6内核下开启文件打开数为65535,worker_rlimit_nofile就相应应该填写65535。 #这是因为nginx调度时分配请求到进程并不是那么的均衡,所以假如填写10240,总并发量达到3-4万时就有进程可能超过10240了,这时会返回502错误。 worker_rlimit_nofile 65535; events { #参考事件模型,use [

缓存

隐身守侯 提交于 2019-12-16 15:42:56
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 主要分:强缓存和协商缓存(Expires、cache-control、last-modified、ETag) 强缓存字段标识: 1、Expires(响应头中的过期时间点),问题: 服务器的时间和浏览器的时间可能并不一致 2、 Cache-Control(max-age:响应头中的过期时长) a、 public : 客户端和代理服务器都可以缓存 b、private : 这种情况就是只有浏览器能缓存了,中间的代理服务器不能缓存。 c、no-cache : 跳过当前的强缓存,发送HTTP请求,即直接进入 协商缓存阶段 。 d、no-store :非常粗暴,不进行任何形式的缓存。 e、 s-maxage:代理服务器缓存时间 协商缓存 强缓存失效之后,服务器根据这个tag( Last-Modified 和 ETag ),来决定是否使用缓存 last-Modified:最后修改时间===》如果请求头中的这个值(If-Modified-Since)小于最后修改时间,说明是时候更新了。返回新的资源,跟常规的HTTP请求响应的流程一样。 ETag:服务器根据当前文件的内容,给文件生成的唯一标识==》客户端的值( f-None-Match )会和服务器端ETag对比,不同时更新 来源: oschina 链接: https://my

浏览器缓存控制三种方式(Expires、Last-Modified、Etag)

我只是一个虾纸丫 提交于 2019-12-15 02:27:12
当请求一个页面时,如果浏览器使用本地缓存,因此我们经常会看到一个HTTP请求为304状态。或者显示200状态,在chrome下标注是from cache,在火狐下会标注BFCache; 我们希望在服务器端更新了静态文件(如css、js、图片),能够在客户端得到及时的更新,但又不想让浏览器每次请求都从服务器端获取静态资源。那么就需要了解一些下面的知识: Last-Modified / If-Modified-Since 当浏览器第一次请求一个url时,服务器端的返回状态码为200,同时HTTP响应头会有一个Last-Modified标记着文件在服务器端最后被修改的时间。 浏览器第二次请求上次请求过的url时,浏览器会在HTTP请求头添加一个If-Modified-Since的标记,用来询问服务器该时间之后文件是否被修改过。 如果服务器端的资源没有变化,则自动返回304状态,使用浏览器缓存,从而保证了浏览器不会重复从服务器端获取资源,也保证了服务器有变化是,客户端能够及时得到最新的资源。 Etag / If-None-Match 当浏览器第一次请求一个url时,服务器端的返回状态码为200,同时HTTP响应头会有一个Etag,存放着服务器端生成的一个序列值。 浏览器第二次请求上次请求过的url时,浏览器会在HTTP请求头添加一个If-None-Match的标记

Nginx配置文件详解

独自空忆成欢 提交于 2019-12-15 01:56:14
Nginx是一款面向性能设计的HTTP服务器,相较于Apache、lighttpd具有占有内存少,稳定性高等优势。 ######Nginx配置文件nginx.conf中文详解##### #定义Nginx运行的用户和用户组 user www www; #nginx进程数,建议设置为等于CPU总核心数。 worker_processes 8; #全局错误日志定义类型,[ debug | info | notice | warn | error | crit ] error_log /usr/local/nginx/logs/error.log info; #进程pid文件 pid /usr/local/nginx/logs/nginx.pid; #指定进程可以打开的最大描述符:数目 #工作模式与连接数上限 #这个指令是指当一个nginx进程打开的最多文件描述符数目,理论值应该是最多打开文件数(ulimit -n)与nginx进程数相除,但是nginx分配请求并不是那么均匀,所以最好与ulimit -n 的值保持一致。 #现在在linux 2.6内核下开启文件打开数为65535,worker_rlimit_nofile就相应应该填写65535。 #这是因为nginx调度时分配请求到进程并不是那么的均衡,所以假如填写10240,总并发量达到3-4万时就有进程可能超过10240了

在CentOS7上部署squid缓存服务器及代理功能

China☆狼群 提交于 2019-12-14 21:16:41
缓存代理概述: 作为应用层的代理服务软件,squid主要提供缓存加速和应用层过滤控制的功能。 代理的基本类型: 传统代理:也就是普通的代理服务,首先必须在客户机的浏览器、聊天工具、下载软件等程序中手动设置代理服务器的地址和端口,然后才能使用代理服务来访问网络。对于网页浏览器,访问网站时的域名解析请求也会发送给指定的代理服务器。 透明代理:提供与传统代理相同的功能和服务,其区别在于客户端不需要指定代理服务器的地址和端口,而是通过默认路由、防火墙策略将Web访问重定向,实际上仍然交给代理服务器来处理。重定向的过程对客户机来说是“透明”的,用户甚至不知道自己在使用代理服务,所以称为“透明代理”。 实验环境表: 安装及运行控制 1.编译安装Squid 配置Squid的编译选项时,将安装目录设置为/usr/local/squid,其他具体选项根据实际需要来确定,配置前可参考./configure --help给出的说明。 tar zxvf squid-3.4.6.tar.gz -C /opt/ cd /opt/squid-3.4.6 ./configure --prefix=/usr/local/squid \ #安装目录 --sysconfdir=/etc \ #单独将配置文件修改到其他目录 --enable-arp-acl \ #直接通过客户端MAC进行管理,防止客户端使用IP欺骗 -

PHP学习资源整理

戏子无情 提交于 2019-12-14 12:05:40
【推荐】2019 Java 开发者跳槽指南.pdf(吐血整理) >>> 学习资源 PHP相关的有参考价值的社区,博客,网站,文章,书籍,视频等资源 PHP网站(PHP Websites) PHP The Right Way 一个PHP实践的快速参考指导 PHP书籍(PHP Books) Modern PHP – 作者是 PHP 之道 的发起人和 Slim框架 的作者 Modern PHP(中文版) 依赖管理( Dependency Management ) 用于依赖管理的包和框架 Composer / Packagist – 一个包和依赖管理器. Composer Installers – 一个多框架Composer库安装器 pickle – PHP扩展安装器 Melody – A tool to build one file Composer scripts. 框架( Frameworks ) Web开发框架 Symfony2 – 由独立组件构成的框架(SP2) Zend Framework 2 – 同样是由独立组件构成的框架(ZF2) Laravel 5 – 简洁优雅的PHP Web开发框架(L5) Aura PHP – 独立组件的框架 Yii2 – 用于开发大型Web应用的高性能PHP框架 Nette – 同样是由独立组件构成的框架 PPI Framework 2 –

如何实现LRU缓存淘汰算法(极客时间)

。_饼干妹妹 提交于 2019-12-14 01:32:33
1.如何分别用链表和数组实现LRU缓冲淘汰策略? 1)什么是缓存? 缓存是一种提高数据读取性能的技术,在硬件设计、软件开发中都有着非广泛的应用,比如常见的CPU缓存、数据库缓存、浏览器缓存等等。 2)为什么使用缓存?即缓存的特点 缓存的大小是有限的,当缓存被用满时,哪些数据应该被清理出去,哪些数据应该被保留?就需要用到缓存淘汰策略。 3)什么是缓存淘汰策略? 指的是当缓存被用满时清理数据的优先顺序。 4)有哪些缓存淘汰策略? 常见的3种包括先进先出策略FIFO(First In,First Out)、最少使用策略LFU(Least Frenquently Used)、最近最少使用策略LRU(Least Recently Used)。 5)链表实现LRU缓存淘汰策略 当访问的数据没有存储在缓存的链表中时,直接将数据插入链表表头,时间复杂度为O(1);当访问的数据存在于存储的链表中时,将该数据对应的节点,插入到链表表头,时间复杂度为O(n)。如果缓存被占满,则从链表尾部的数据开始清理,时间复杂度为O(1)。 6)数组实现LRU缓存淘汰策略 方式一 :首位置保存最新访问数据,末尾位置优先清理 当访问的数据未存在于缓存的数组中时,直接将数据插入数组第一个元素位置,此时数组所有元素需要向后移动1个位置,时间复杂度为O(n);当访问的数据存在于缓存的数组中时

《邓哥奇遇记6》—— HTTP缓存机制

亡梦爱人 提交于 2019-12-13 12:37:42
  我们经常说这个页面有缓存~!这个Css有缓存~!我们如果打开控制台,也经常看到有个叫做Cache-Control的字段,但是这个字段里有很多种类的值,有很多同学不明白这些值都是什么意思~   这些值不但在实际中会经常用到,而且在面试中也会经常被提起,那么今天我们就来一起看一下这些值的含义吧~   其实cache-control里的字段分为两类,一类是RequestHeader中使用的,另一类是ResponseHeader中使用的,我们最常见的或者说和前端最相关的就是ResponseHeader中使用的cache-control。   我们今天来用邓哥吃药的例子,来为大家解释ResponseHeader中的Cache-Control的各种值~   邓哥的近况可以用一句话来形容,那就是“浪多人变傻”。有一天邓哥忽然发现自己的脑子不够用了。于是决定买点药,不能让这种情况进一步恶化下去~   于是邓哥去了药店,药店的医生见了邓哥,顿时大喜道:“呀~!邓哥来啦~!今天想吃点啥?”邓哥向药店医生描述了自己的情况之后,药店的医生推荐给邓哥本店的招牌【脑残片】。我们的故事就是从这开始的~   这时我们可以把邓哥比作浏览器,药店比作服务器,药店医生比作服务器的代理,脑残片就是要请求的资源,比如一个图片之类的~   1.max-age:   邓哥有个怪癖,买回来超过七天就不吃了,就得买新的。

Django的缓存机制

此生再无相见时 提交于 2019-12-12 15:34:25
本文目录 一 缓存介绍 二 Django中的6种缓存方式 三 Django6种缓存的配置 四 Django中的缓存应用 回到目录 一 缓存介绍 在动态网站中,用户所有的请求,服务器都会去数据库中进行相应的增,删,查,改,渲染模板,执行业务逻辑,最后生成用户看到的页面. 当一个网站的用户访问量很大的时候,每一次的的后台操作,都会消耗很多的服务端资源,所以必须使用缓存来减轻后端服务器的压力. 缓存是将一些常用的数据保存内存或者memcache中,在一定的时间内有人来访问这些数据时,则不再去执行数据库及渲染等操作,而是直接从内存或memcache的缓存中去取得数据,然后返回给用户. 回到目录 二 Django中的6种缓存方式 开发调试缓存 内存缓存 文件缓存 数据库缓存 Memcache缓存(使用python-memcached模块) Memcache缓存(使用pylibmc模块) 经常使用的有文件缓存和Mencache缓存 回到目录 三 Django6种缓存的配置 1.2.1 开发调试(此模式为开发调试使用,实际上不执行任何操作) settings.py文件配置 CACHES = { 'default': { 'BACKEND': 'django.core.cache.backends.dummy.DummyCache', # 缓存后台使用的引擎 'TIMEOUT': 300, #