cari

常用缓存技术

数据缓存:这里所说的数据缓存是指数据库查询缓存,每次访问页面的时候,都会先检测相应的缓存数据是否存在,如果不存在,就连接数据库,得到数据,并把查询结果序列化后保存到文件中,以后同样的查询结果就直接从缓存表或文件中获得。

用的最广的例子看Discuz的搜索功能,把结果ID缓存到一个表中,下次搜索相同关键字时先搜索缓存表。

举个常用的方法,多表关联的时候,把附表中的内容生成数组保存到主表的一个字段中,需要的时候数组分解一下,这样的好处是只读一个表,坏处就是两个数据同步会多不少步骤,数据库永远是瓶颈,用硬盘换速度,是这个的关键点。

页面缓存: 每次访问页面的时候,都会先检测相应的缓存页面文件是否存在,如果不存在,就连接数据库,得到数据,显示页面并同时生成缓存页面文件,这样下次访问的时候页面文件就发挥作用了。(模板引擎和网上常见的一些缓存类通常有此功能)

时间触发缓存: 检查文件是否存在并且时间戳小于设置的过期时间,如果文件修改的时间戳比当前时间戳减去过期时间戳大,那么就用缓存,否则更新缓存。

内容触发缓存: 当插入数据或更新数据时,强制更新缓存。

静态缓存: 这里所说的静态缓存是指静态化,直接生成HTML或XML等文本文件,有更新的时候重生成一次,适合于不太变化的页面,这就不说了。

以上内容是代码级的解决方案,我直接CP别的框架,也懒得改,内容都差不多,很容易就做到,而且会几种方式一起用,但下面的内容是服务器端的缓存方案,非代码级的,要有多方的合作才能做到

内存缓存: Memcached是高性能的,分布式的内存对象缓存系统,用于在动态应用中减少数据库负载,提升访问速度。

这里说下Memcached的例子:

  1. $memcache = new Memcache;
  2. $memcache->connect('localhost', 11211) or die ("Could not connect");
  3. $version = $memcache->getVersion();
  4. echo "Server's version: ".$version."\n";
  5. $tmp_object = new stdClass;
  6. $tmp_object->str_attr = 'test';
  7. $tmp_object->int_attr = 123;
  8. $memcache->set('key', $tmp_object, false, 10) or die ("Failed to save data at the server");
  9. echo "Store data in the cache (data will expire in 10 seconds)\n";
  10. $get_result = $memcache->get('key');
  11. echo "Data from the cache:\n";
  12. var_dump($get_result);
  13. ?>
复制代码

读库的例子:

  1. $sql = 'SELECT * FROM users';
  2. $key = md5($sql); //memcached 对象标识符
  3. if ( !($datas = $mc->get($key)) ) {
  4. // 在 memcached 中未获取到缓存数据,则使用数据库查询获取记录集。
  5. echo "n".str_pad('Read datas from MySQL.', 60, '_')."n";
  6. $conn = mysql_connect('localhost', 'test', 'test');
  7. mysql_select_db('test');
  8. $result = mysql_query($sql);
  9. while ($row = mysql_fetch_object($result))
  10. $datas[] = $row;
  11. // 将数据库中获取到的结果集数据保存到 memcached 中,以供下次访问时使用。
  12. $mc->add($key, $datas);
  13. } else {
  14. echo "n".str_pad('Read datas from memcached.', 60, '_')."n";
  15. }
  16. var_dump($datas);
  17. ?>
复制代码

php的缓冲器: 有eaccelerator, apc, phpa,xcache,这个这个就不说了吧,搜索一堆一堆的,自己看啦,知道有这玩意就OK

MYSQL缓存: 这也算非代码级的,经典的数据库就是用的这种方式,看下面的运行时间,0.09xxx之类的 我贴段根据蓝色那家伙修改后部分my.ini吧,2G的MYISAM表可以在0.05S左右,据说他前后改了有快一年

代码拷贝框

  1. [client]
  2. ……
  3. default-character-set=gbk
  4. default-storage-engine=MYISAM
  5. max_connections=600
  6. max_connect_errors=500
  7. back_log=200
  8. interactive_timeout=7200
  9. query_cache_size=64M
  10. ……
  11. table_cache=512
  12. ……
  13. myisam_max_sort_file_size=100G
  14. myisam_max_extra_sort_file_size=100G
  15. myisam_sort_buffer_size=128M
  16. key_buffer_size=1024M
  17. read_buffer_size=512M
  18. ……
  19. thread_concurrency=8
复制代码

基于反向代理的Web缓存: 如Nginx,SQUID,mod_proxy(apache2以上又分为mod_proxy和mod_cache) NGINX的例子

  1. #user nobody;
  2. worker_processes 4;
  3. error_log logs/error.log crit;
  4. pid logs/nginx.pid;
  5. worker_rlimit_nofile 10240;
  6. events {
  7. use epoll;
  8. worker_connections 51200;
  9. }
  10. http {
  11. include mime.types;
  12. default_type application/octet-stream;
  13. sendfile on;
  14. keepalive_timeout 65;
  15. tcp_nodelay on;
  16. # server pool
  17. upstream bspfrontsvr {
  18. server 10.10.10.224:80 weight=1;
  19. server 10.10.10.221:80 weight=1;
  20. }
  21. upstream bspimgsvr {

  22. server 10.10.10.201:80 weight=1;
  23. }
  24. upstream bspstylesvr {

  25. server 10.10.10.202:80 weight=1;
  26. }
  27. upstream bsphelpsvr {

  28. server 10.10.10.204:80 weight=1;
  29. }
  30. upstream bspwsisvr {

  31. server 10.10.10.203:80 weight=1;
  32. }
  33. upstream bspadminsvr {

  34. server 10.10.10.222:80 weight=1;
  35. }
  36. upstream bspbuyersvr {

  37. server 10.10.10.223:80 weight=1;
  38. }
  39. upstream bspsellersvr {

  40. server 10.10.10.225:80 weight=1;
  41. }
  42. upstream bsploginsvr {
  43. server 10.10.10.220:443 weight=1;
  44. }
  45. upstream bspregistersvr {
  46. server 10.10.10.220:80 weight=1;
  47. }
  48. log_format test_com '$remote_addr - $remote_user [$time_local] "$request" '
  49. '$status $body_bytes_sent "$http_referer" "$http_user_agent" ';
  50. #--------------------------------------------------------------------
  51. #img.test.com
  52. server {
  53. listen 10.10.10.230:80;
  54. server_name img.test.com;
  55. location / {
  56. proxy_pass http://bspimgsvr;
  57. include proxy_setting.conf;
  58. }
  59. access_log logs/img.log test_com;
  60. }
  61. #style.test.com

  62. server {
  63. listen 10.10.10.230:80;
  64. server_name style.test.com;
  65. location / {
  66. proxy_pass http://bspstylesvr;
  67. include proxy_setting.conf;
  68. }
  69. access_log logs/style.log test_com;
  70. }
  71. #help.test.com

  72. server {
  73. listen 10.10.10.230:80;
  74. server_name help.test.com;
  75. location / {
  76. proxy_pass http://bsphelpsvr;
  77. include proxy_setting.conf;
  78. }
  79. access_log logs/help.log test_com;
  80. }
  81. #admin.test.com

  82. server {
  83. listen 10.10.10.230:80;
  84. server_name admin.test.com;
  85. location / {
  86. proxy_pass http://bspadminsvr;
  87. include proxy_setting.conf;
  88. }
  89. access_log logs/admin.log test_com;
  90. }
  91. #buyer.test.com

  92. server {
  93. listen 10.10.10.230:80;
  94. server_name buyer.test.com;
  95. location / {
  96. proxy_pass http://bspbuyersvr;
  97. include proxy_setting.conf;
  98. }
  99. access_log logs/buyer.log test_com;
  100. }
  101. #seller.test.com

  102. server {
  103. listen 10.10.10.230:80;
  104. server_name seller.test.com;
  105. location / {
  106. proxy_pass http://bspsellersvr;
  107. include proxy_setting.conf;
  108. }
  109. access_log logs/seller.log test_com;
  110. }
  111. #wsi.test.com
  112. server {
  113. listen 10.10.10.230:80;
  114. server_name wsi.test.com;
  115. location / {
  116. proxy_pass http://bspwsisvr;
  117. include proxy_setting.conf;
  118. }
  119. access_log logs/wsi.log test_com;
  120. }
  121. #www.test.com
  122. server {
  123. listen 10.10.10.230:80;
  124. server_name www.test.com *.test.com;
  125. location ~ ^/NginxStatus/ {
  126. stub_status on;
  127. access_log off;
  128. }
  129. location / {
  130. proxy_pass http://bspfrontsvr;
  131. include proxy_setting.conf;
  132. }
  133. access_log logs/www.log test_com;
  134. error_page 500 502 503 504 /50x.html;
  135. location = /50x.html {
  136. root html;
  137. }
  138. }
  139. #login.test.com
  140. server {
  141. listen 10.10.10.230:443;
  142. server_name login.test.com;
  143. ssl on;
  144. ssl_certificate cert.pem;
  145. ssl_certificate_key cert.key;
  146. ssl_session_timeout 5m;
  147. ssl_protocols SSLv2 SSLv3 TLSv1;
  148. ssl_ciphers ALL:!ADH:!EXPORT56:RC4+RSA:+HIGH:+MEDIUM:+LOW:+SSLv2:+EXP;
  149. ssl_prefer_server_ciphers on;
  150. location / {
  151. proxy_pass https://bsploginsvr;
  152. include proxy_setting.conf;
  153. }
  154. access_log logs/login.log test_com;
  155. }
  156. #login.test.com for register
  157. server {
  158. listen 10.10.10.230:80;
  159. server_name login.test.com;
  160. location / {
  161. proxy_pass http://bspregistersvr;
  162. include proxy_setting.conf;
  163. }
  164. access_log logs/register.log test_com;
  165. }
  166. }

  167. proxy_redirect off;
  168. proxy_set_header Host $host;
  169. proxy_set_header X-Real-IP $remote_addr;
  170. proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  171. client_max_body_size 10m;
  172. client_body_buffer_size 128k;
  173. proxy_connect_timeout 90;
  174. proxy_send_timeout 90;
  175. proxy_read_timeout 90;
  176. proxy_buffer_size 4k;
  177. proxy_buffers 4 32k;
  178. proxy_busy_buffers_size 64k;
  179. proxy_temp_file_write_size 64k;
复制代码

mod_proxy的例子:

  1. ServerName www.zxsv.com
  2. ServerAdmin admin@zxsv.com
  3. # reverse proxy setting
  4. ProxyPass / http://www.zxsv.com:8080/
  5. ProxyPassReverse / http://www.zxsv.com:8080/
  6. # cache dir root
  7. CacheRoot "/var/www/proxy"
  8. # max cache storage
  9. CacheSize 50000000
  10. # hour: every 4 hour
  11. CacheGcInterval 4
  12. # max page expire time: hour
  13. CacheMaxExpire 240
  14. # Expire time = (now - last_modified) * CacheLastModifiedFactor
  15. CacheLastModifiedFactor 0.1
  16. # defalt expire tag: hour
  17. CacheDefaultExpire 1
  18. # force complete after precent of content retrived: 60-90%
  19. CacheForceCompletion 80
  20. CustomLog /usr/local/apache/logs/dev_access_log combined
复制代码

而有关SQUID的例子 ,可以参考下这里。

DNS轮询: BIND是一款开放源码的DNS服务器软件,这个要说起来就大了,自己搜索去,大家知道有这个东西就行了。 我知道的有chinacache等大站就是这样做的,说简单点就是多服务器啦,把同一个页面或文件缓存到不同的服务器上,按南北自动解析到相关的服务器中。



Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Status Semasa PHP: Lihat trend pembangunan webStatus Semasa PHP: Lihat trend pembangunan webApr 13, 2025 am 12:20 AM

PHP tetap penting dalam pembangunan web moden, terutamanya dalam pengurusan kandungan dan platform e-dagang. 1) PHP mempunyai ekosistem yang kaya dan sokongan rangka kerja yang kuat, seperti Laravel dan Symfony. 2) Pengoptimuman prestasi boleh dicapai melalui OPCACHE dan NGINX. 3) Php8.0 memperkenalkan pengkompil JIT untuk meningkatkan prestasi. 4) Aplikasi awan asli dikerahkan melalui Docker dan Kubernet untuk meningkatkan fleksibiliti dan skalabiliti.

PHP vs Bahasa Lain: PerbandinganPHP vs Bahasa Lain: PerbandinganApr 13, 2025 am 12:19 AM

PHP sesuai untuk pembangunan web, terutamanya dalam pembangunan pesat dan memproses kandungan dinamik, tetapi tidak baik pada sains data dan aplikasi peringkat perusahaan. Berbanding dengan Python, PHP mempunyai lebih banyak kelebihan dalam pembangunan web, tetapi tidak sebaik python dalam bidang sains data; Berbanding dengan Java, PHP melakukan lebih buruk dalam aplikasi peringkat perusahaan, tetapi lebih fleksibel dalam pembangunan web; Berbanding dengan JavaScript, PHP lebih ringkas dalam pembangunan back-end, tetapi tidak sebaik JavaScript dalam pembangunan front-end.

PHP vs Python: Ciri dan Fungsi TerasPHP vs Python: Ciri dan Fungsi TerasApr 13, 2025 am 12:16 AM

PHP dan Python masing -masing mempunyai kelebihan sendiri dan sesuai untuk senario yang berbeza. 1.PHP sesuai untuk pembangunan web dan menyediakan pelayan web terbina dalam dan perpustakaan fungsi yang kaya. 2. Python sesuai untuk sains data dan pembelajaran mesin, dengan sintaks ringkas dan perpustakaan standard yang kuat. Apabila memilih, ia harus diputuskan berdasarkan keperluan projek.

PHP: Bahasa utama untuk pembangunan webPHP: Bahasa utama untuk pembangunan webApr 13, 2025 am 12:08 AM

PHP adalah bahasa skrip yang digunakan secara meluas di sisi pelayan, terutamanya sesuai untuk pembangunan web. 1.PHP boleh membenamkan HTML, memproses permintaan dan respons HTTP, dan menyokong pelbagai pangkalan data. 2.PHP digunakan untuk menjana kandungan web dinamik, data borang proses, pangkalan data akses, dan lain -lain, dengan sokongan komuniti yang kuat dan sumber sumber terbuka. 3. PHP adalah bahasa yang ditafsirkan, dan proses pelaksanaan termasuk analisis leksikal, analisis tatabahasa, penyusunan dan pelaksanaan. 4.Php boleh digabungkan dengan MySQL untuk aplikasi lanjutan seperti sistem pendaftaran pengguna. 5. Apabila debugging php, anda boleh menggunakan fungsi seperti error_reporting () dan var_dump (). 6. Mengoptimumkan kod PHP untuk menggunakan mekanisme caching, mengoptimumkan pertanyaan pangkalan data dan menggunakan fungsi terbina dalam. 7

PHP: asas banyak laman webPHP: asas banyak laman webApr 13, 2025 am 12:07 AM

Sebab mengapa PHP adalah timbunan teknologi pilihan untuk banyak laman web termasuk kemudahan penggunaannya, sokongan komuniti yang kuat, dan penggunaan yang meluas. 1) Mudah dipelajari dan digunakan, sesuai untuk pemula. 2) Mempunyai komuniti pemaju yang besar dan sumber yang kaya. 3) Digunakan secara meluas dalam platform WordPress, Drupal dan lain -lain. 4) Mengintegrasikan dengan ketat dengan pelayan web untuk memudahkan penggunaan pembangunan.

Di luar gembar -gembur: Menilai peranan PHP hari iniDi luar gembar -gembur: Menilai peranan PHP hari iniApr 12, 2025 am 12:17 AM

PHP kekal sebagai alat yang kuat dan digunakan secara meluas dalam pengaturcaraan moden, terutamanya dalam bidang pembangunan web. 1) PHP mudah digunakan dan diintegrasikan dengan lancar dengan pangkalan data, dan merupakan pilihan pertama bagi banyak pemaju. 2) Ia menyokong penjanaan kandungan dinamik dan pengaturcaraan berorientasikan objek, sesuai untuk membuat dan mengekalkan laman web dengan cepat. 3) Prestasi PHP dapat ditingkatkan dengan caching dan mengoptimumkan pertanyaan pangkalan data, dan komuniti yang luas dan ekosistem yang kaya menjadikannya masih penting dalam timbunan teknologi hari ini.

Apakah rujukan yang lemah dalam PHP dan bilakah mereka berguna?Apakah rujukan yang lemah dalam PHP dan bilakah mereka berguna?Apr 12, 2025 am 12:13 AM

Dalam PHP, rujukan lemah dilaksanakan melalui kelas lemah dan tidak akan menghalang pemungut sampah daripada menebus objek. Rujukan lemah sesuai untuk senario seperti sistem caching dan pendengar acara. Harus diingat bahawa ia tidak dapat menjamin kelangsungan hidup objek dan pengumpulan sampah mungkin ditangguhkan.

Terangkan kaedah sihir __invoke dalam PHP.Terangkan kaedah sihir __invoke dalam PHP.Apr 12, 2025 am 12:07 AM

Kaedah \ _ \ _ membolehkan objek dipanggil seperti fungsi. 1. Tentukan kaedah \ _ \ _ supaya objek boleh dipanggil. 2. Apabila menggunakan sintaks $ OBJ (...), PHP akan melaksanakan kaedah \ _ \ _ invoke. 3. Sesuai untuk senario seperti pembalakan dan kalkulator, meningkatkan fleksibiliti kod dan kebolehbacaan.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
WWE 2K25: Cara Membuka Segala -galanya Di Myrise
4 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat

Pelayar Peperiksaan Selamat ialah persekitaran pelayar selamat untuk mengambil peperiksaan dalam talian dengan selamat. Perisian ini menukar mana-mana komputer menjadi stesen kerja yang selamat. Ia mengawal akses kepada mana-mana utiliti dan menghalang pelajar daripada menggunakan sumber yang tidak dibenarkan.

MantisBT

MantisBT

Mantis ialah alat pengesan kecacatan berasaskan web yang mudah digunakan yang direka untuk membantu dalam pengesanan kecacatan produk. Ia memerlukan PHP, MySQL dan pelayan web. Lihat perkhidmatan demo dan pengehosan kami.

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Penyesuai Pelayan SAP NetWeaver untuk Eclipse

Integrasikan Eclipse dengan pelayan aplikasi SAP NetWeaver.

SublimeText3 versi Inggeris

SublimeText3 versi Inggeris

Disyorkan: Versi Win, menyokong gesaan kod!

SublimeText3 versi Mac

SublimeText3 versi Mac

Perisian penyuntingan kod peringkat Tuhan (SublimeText3)