`
hadoop_jun_xj
  • 浏览: 8987 次
  • 性别: Icon_minigender_1
  • 来自: 成都
最近访客 更多访客>>
文章分类
社区版块
存档分类
最新评论

打造高性能站点

阅读更多
http://robbin.iteye.com/  ---Robbin的博客
http://robbin.iteye.com/blog/77338  ---为什么ORM性能比iBatis好?
http://bentley.blogbus.com/logs/22138875.html  --Django缓存

CACHE_BACKEND = 'memcached://127.0.0.1:11211/'
Memcached的一个极好的特性是它在多个服务器分享缓存的能力,这意味着你可以在多台机器上运行Memcached进程,程序将会把这组机器当作一个单独的缓存,而不需要在每台机器上复制缓存值
CACHE_BACKEND = 'memcached://172.19.26.240:11211;172.19.26.242:11211/'
Memcached的是基于内存的缓存有一个重大的缺点,因为缓存数据只存储在内存中,则如果服务器死机的话数据会丢
失,显然内存不是为持久数据存储准备的

==
数据库缓存
  在你的数据库创建缓存表,并在表里指出Django的缓存系统来使用数据库表作为缓存后端

文件系统缓存
   CACHE_BACKEND = 'file:///var/tmp/django_cache'
本地缓存器缓存
   CACHE_BACKEND = 'locmem:///'
简单缓存(开发用)
   CACHE_BACKEND = 'simple:///'
假缓存(开发用)
   CACHE_BACKEND = 'dummy:///'

CACHE_BACKEND = "locmem:///?timeout=30&max_entries=400"

整站点缓存

视图缓存
一个更细粒度的使用缓存框架的方式是缓存单独视图的输出.
from django.views.decorators.cache import cache_page  
 
@cache_page(60 * 15)  
def my_view(request, param):

视图缓存和URL有关,如果多个URLs指向同一视图,则每个URL将被单独缓存,
    urlpatterns = ('',  
        (r'^foo/(\d{1,2})/$', my_view),  
    ) 
则对/foo/1/和/foo/23/的请求将像你期望的那样被单独缓存,但是一旦一个特别的URL(例如/foo/23/)被请求,则该URL后续
的请求将使用缓存. 在URL配置里指定视图缓存而不是在视图方法本身附近,你可能想重用视图方法到另一个很少缓存的站点,或者你可能想发布视图给那些可
能想不用缓存来使用它们的人.

urlpatterns = ('',  
    (r'^foo/(\d{1,2})/$', cache_page(my_view, 60 * 15)),  
)  

低级缓存API:
from django.core.cache import cache 
>>> cache.set('my_key', 'hello, world!', 30)  
>>> cache.get('my_key') 

如果缓存中对象不存在,或者缓存后端不可得到,则cache.get()返回None:

# Wait 30 seconds for 'my_key' to expire...  
 
>>> cache.get('my_key')  
None

建议不要在缓存中存储字面上的None,因为你不能区别你存储的None值和通过返回None值表示的缓存缺失
cache.get()可以使用一个default参数,它指定了如果对象在缓存中不存在时的返回值:
    >>> cache.get('my_key', 'has expired')  
    'has expired' 

    >>> cache.set('a', 1)  
    >>> cache.set('b', 2)  
    >>> cache.set('c', 3)  
    >>> cache.get_many(['a', 'b', 'c'])  
    {'a': 1, 'b': 2, 'c': 3} 

====
from django.views.decorators.vary import vary_on_headers
# Python 2.4+ decorator syntax.  
@vary_on_headers('User-Agent')  
def my_view(request):  
    # ... 

这种情况下,缓存机制(例如Django自己的缓存中间件)将对每个唯一的user-agent缓存单独版本的页面
使用vary_on_headers装饰器而不是手动设置Vary头部(使用类似于response['Vary'] = 'user-agent')的优势是装饰器添加
到Vary头部(可能已经存在)而不是从零开始设置它并潜在的覆盖已经在那里的东西
你可以传递多个头部到vary_on_headers():

这两个视图是相等的:
    @vary_on_cookie 
    def my_view(request):  
        # ...  
     
    @vary_on_headers('Cookie')  
    def my_view(request):  
        # ... 

===缓存使用策略
在项目中的具体应用策略(也就是哪些数据应该缓存?怎么样缓存?过 期策略?)
总原则是将经常需要从数据库读取的数据缓存在memcached中。
这些数据也分为几类:
一、经常被读取并且实时性要求不强可以等到自动过期的数据。例如网站首页最新文章列表、某某排行等数据。也就是虽然新数据产生了,但对用户体验不会产生任何影响的场景。
这类数据就使用典型的缓存策略,设置一过合理的过期时间,当数据过期以后再从数据库中读取。当然你得制定一个缓存清除策略,便于编辑或者其它人员能马上看到效果。
二、经常被读取并且实时性要求强的数据。比如用户的好友列表,用户文章列表,用户阅读记录等。
这类数据首先被载入到memcached中,当发生更改(添加、修改、删除)时就清除缓存。在缓存的时候,我将查询的SQL语句md5()得到它的 hash值作为key,结果数组作为值写入memcached,并且将该SQL涉及的table_name以及hash值配对存入memcached中。 当更改了这个表时,我就将与此表相配对的key的缓存全部删除。
三、统计类缓存,比如文章浏览数、网站PV等
此类缓存是将在数据库的中来累加的数据放在memcached来累加。获取也通过memcached来获取。但这样就产生了一个问题,如果 memcached服务器down掉的话这些数据就有可能丢失,所以一般使用memcached的永固性存储,这方面我们新浪使用memcachedb。
四、活跃用户的基本信息或者某篇热门文章。
此类数据的一个特点就是数据都是一行,也就是一个一维数组,当数据被update时(比如修改昵称、文章的评论数),在更改数据库数据的同时,使用Memcache::replace替换掉缓存里的数据。这样就有效了避免了再次查询数据库。
六、session数据
使用memcached来存储session的效率是最高的。memcached本身也是非常稳定的,不太用担心它会突然down掉引起session数据的丢失,即使丢失就重新登录了,也没啥。见[多服务器session共享之memcache共享]
【总结】
通过以上的策略数据库的压力将会被大大减轻。检验你使用memcached是否得当的方法是查看memcached的命中率。有些策略好的网站的命中率可以到达到90%以上。
分享到:
评论

相关推荐

    搭建高性能站点

    这里,我们将深入探讨几个核心知识点,帮助你理解如何打造一个高性能的站点。 1. **负载均衡**:当网站面临大量用户访问时,单一服务器可能无法承载。通过负载均衡技术,我们可以将流量分散到多个服务器上,从而...

    构建高性能web站点

    在构建高性能Web站点的过程中,我们需要考虑许多关键因素以确保网站能够快速响应用户请求,并在高流量下保持稳定。"构建高性能Web站点"这个主题涵盖了网络基础、服务器优化、缓存策略、负载均衡、内容分发、数据库...

    构建高性能WEB站点

    本书《构建高性能WEB站点》是针对WEB开发者的一本实用性极强的技术书籍,旨在帮助开发者构建性能优异的...开发者通过阅读和实践书中的知识点,将能够提升自身开发高性能WEB站点的能力,为用户打造更加流畅的网络体验。

    高性能网站建设指南.zip

    3. **构建高性能Web站点(精选版)**:此书可能详细介绍了如何从整体上规划和设计高性能的Web站点,包括选择合适的Web服务器(如Apache、Nginx),配置HTTP缓存,实现动静分离,以及优化网络连接(如使用HTTP/2,...

    TheFasttheme使用原生js少量css打造高性能快响应又简洁的主题

    【TheFasttheme】是一款以高性能、快响应和简洁设计为特点的主题,主要依赖原生JavaScript...通过研究和使用这个主题,开发者可以学习到如何优化JavaScript代码,编写简洁有效的CSS,以及如何构建高性能的Jekyll站点。

    使用_CakePHP_快速打造_Web_站点

    【使用 CakePHP 快速打造 Web 站点】教程旨在引导初学者了解和使用 CakePHP 框架,以高效地开发 Web 应用程序。CakePHP 是一个基于 Model-View-Controller (MVC) 设计模式的 PHP 框架,其稳定性和便捷性使其成为快速...

    FastTunnel 高性能跨平台内网穿透工具,使用它可以实现将内网服务暴露到公网供自己或任何人访问

    FastTunnel 高性能跨平台内网穿透工具,使用它可以实现将内网服务暴露到公网供自己或任何人访问。 - 与其他穿透工具不同的是,FastTunnel项目致力于打造一个易于扩展、易于维护的内网穿透框架。开源免费跨平台 内网...

    Node.js-docsite是一款开源站点搭建工具依据其提供的功能能够快速搭建一个开源站点

    Node.js具有异步、事件驱动的特性,这使得它在处理高并发I/O操作时表现出色,特别适合用于构建高性能的网络应用,如Web服务器、API服务和实时通信应用等。 ### 二、静态网站生成器 静态网站生成器是一种工具,它将...

    动易SW漂亮大气的企业站点模板

    在技术实现上,动易SW可能基于PHP语言开发,采用MySQL作为数据库,这种组合具有高性能、安全性高和易于扩展的特点。同时,模板可能采用HTML5和CSS3技术,提升网页的交互性和视觉效果。对于开发者来说,动易SW提供的...

    屌丝程序员如何打造日PV百万的网站架构.pdf

    3. 使用高性能服务器:Nginx作为一种高效的HTTP和反向代理服务器,其轻量级和高性能的特点使其成为处理大量静态内容请求的首选。 4. 负载均衡与服务器扩展:由于单一服务器无法满足高并发访问的需求,通过配置多台...

    霍尼韦尔推出多站点工业网络安全解决方案.pdf

    另一方面,美国邦纳推出的VS8系列高性能微型传感器,具备紧凑小巧的外形尺寸和多种光源(激光、可见红光、可见蓝光)以及四种检测模式(对射式、反射板式、可调区域式、定区域式),适用于狭小空间的各类检测应用,...

    用于使用MDX和主题UI构建的文档站点的简约Gatsby主题

    Gatsby是一个基于React的静态站点生成器,它利用现代Web技术来快速构建高性能的网站。MDX(Markdown + JSX)是一种语法,允许在Markdown文件中直接嵌入React组件,而主题UI则是一个用于创建可复用和可配置的React UI...

    打造自己强劲的通达信.docx

    【打造自己强劲的通达信】是指通过个人定制和优化官方发布的通达信软件,以满足个人炒股需求和提升软件性能。通达信是一款广泛使用的股票行情分析软件,提供了实时行情、交易托付、资讯等功能。本文将详细介绍如何在...

    node.js+mysql博客全栈系统源码+数据库,含后台完整基础功能,小程序,web前台站点一键置灰,支持移动端适

    它具有非阻塞I/O和事件驱动的特性,非常适合处理大量并发请求,因此在构建高性能的Web应用时受到广泛青睐。 接着,我们来看看MySQL。MySQL是一款开源、免费的关系型数据库管理系统,具有高可靠性和高性能。在博客...

    打造个性XP

    ### 打造个性XP系统:优化技巧与性能提升 在探讨如何优化Windows XP(以下简称WinXP)系统,使之运行...这些建议涵盖了硬件升级、系统设置优化、软件管理等多个层面,为打造个性化的高性能WinXP系统提供了全面指南。

    AyWeb企业网站管理系统v2.6.3build090510单站点版

    AyWeb企业网站管理系统是一款专为企业用户设计的高效、易用的网站管理工具,其v2.6.3build090510单站点版更是集成了丰富的功能与优化的性能,为企业的在线业务提供了强大的支持。本文将深入探讨该系统的特性和使用...

    Liferay基本操作

    控制面板中可以看到用户账户信息、系统性能监控、应用管理、内容管理等一系列的选项,用以全面掌控Liferay Portal实例。 综上所述,Liferay基本操作的知识点涵盖了登录、站点建立、页面管理、内容管理、站点配置和...

    双网协同打造5G通信连片精品5G网络优化技术方案2020.pdf

    为满足这种需求,中国电信广州分公司与中兴通讯联合推出了一项 5G 连片精品网络优化技术方案,该方案旨在建设一个高性能、可靠的 5G 网络,满足用户日益增长的网络需求。 二、组网结构 在建设 5G 连片精品网络时,...

Global site tag (gtag.js) - Google Analytics