redis - java web怎么把頁(yè)面放到緩存里讓nginx直接讀取
問題描述
想實(shí)現(xiàn)這么一個(gè)頁(yè)面靜態(tài)化的方案:nginx接受到請(qǐng)求之后先去redis或者memcache中取頁(yè)面的緩存,如果緩存里沒有再取請(qǐng)求action,action里把渲染好的頁(yè)面緩存起來供下次訪問使用。求解答這個(gè)方案有可行性嗎,怎么把渲染好的頁(yè)面存放到緩存里?
問題解答
回答1:Nginx有一個(gè)proxy cache的功能,能自動(dòng)緩存后端比如Tomcat生成的內(nèi)容為靜態(tài)頁(yè)面,并且可以設(shè)定過期時(shí)間.你也可以在Java端自動(dòng)清除這些靜態(tài)緩存.
這里以Nginx的fastcgi cache為例,用PHP手動(dòng)刪除緩存:
Nginx里的配置項(xiàng):fastcgi_cache_path /png/nginx/1.5.7/ngx_fcgi_cache levels=1:2 keys_zone=WORDPRESS:512m inactive=1d max_size=1g;以下腳本要清除頁(yè)面 www.example.com/sample-page 的緩存:/png/nginx/1.5.7/ngx_fcgi_cache/5/b6/abad4d0ad087b7eecaac98d0a2a08b65<?php$dir = ’/png/nginx/1.5.7/ngx_fcgi_cache’;$md5 = md5(’GET://www.example.com/sample-page’);$cache = $dir.’/’.substr($md5, -1, 1).’/’.substr($md5, -3, 2).’/’.$md5;@unlink($cache);
相關(guān)文章:
1. javascript - npm下載的模塊不完整是什么問題?2. 從事游戲服務(wù)端開發(fā)(Java),需要具備哪些技術(shù)???3. java - Spring事務(wù)回滾問題4. python 操作mysql如何經(jīng)量防止自己的程序在之后被惡意注入(說白了就是問一下python防注入的一些要點(diǎn))5. 正兒八經(jīng)地請(qǐng)教天蓬老師6. 求一個(gè)mySQL安裝包7. 不能插入數(shù)據(jù)。8. mysql - 面試題:如何把login_log表轉(zhuǎn)換成last_login表?9. 剛放到服務(wù)器的項(xiàng)目出現(xiàn)這中錯(cuò)誤,有高手指點(diǎn)嗎10. mysql 插入數(shù)值到特定的列一直失敗
