如何分离个人信息,缓存动态页面

肖理达 (KrazyNio AT hotmail.com), 2005.06.07, 转载请注明出处

一直想写一篇关于动态页面 cache 的文章,但每次“提笔”却又放弃,因为总是觉得准备得还不够充分。今天埋头写下,只是希望对自己的工作做一些笔录。

1、问题起源

我们经常会在一个动态页面中加入很多个人信息,以 CMS 首页为例,用户登录之前显示登录框,登录之后显示其用户名,并根据权限显示其可用模块的链接。由于每个用户登录之后,显示出来的动态信息都是不一样的,所以这部分无法进行 cache,我们将这部分信息定义为“[u]个人信息[/u]”,它的特性是根据登录用户进行动态改变。

现在问题来了,就是一个 CMS 的首页,访问者的登录概率并不是百分百的,应该说有一大部分人访问首页是没有登录的,这个时候的首页是一个公共的页面,没有任何个人信息,或者说这时候首页的任何动态信息都是可以转换成静态的,也就是说这部分是可 cache 的。

2、使用 JavaScript 分离个人信息

解决这个问题的方法有很多种,一种是将个人信息和其他信息进行分离,如在 CMS 首页中加入一个外部的 JavaScript 文件,而这个文件的内容实际上是由 PHP 动态生成的。CMS 首页 index.php 代码片段:

<script language="JavaScript" src="/js/personal.php"></script>
….
<script language="JavaScript">
document.write(sUser);
document.write(sLinks);
</script>

personal.php 代码片段:

<?php
session_start();
header("Cache-Control: no-store, no-cache, must-revalidate");
?>
sUser = "<?php echo $_SESSION['USER']; ?>";
sLinks = "<?php echo addslashes($_SESSION['LINKS']); ?>";

这种方法比较适合个人信息较少,易于集中显示的情况。通过 JavaScript 外挂代码实现个人信息分离之后,personal.php 是永不 cache 的,这样也就可以放心地对 CMS 首页进行 cache 了,具体的 cache 方法可采用 304 HTTP 头与 Cache_Lite 相结合的方式,这在后边有详细代码示例。

3、选择性分离个人信息

一旦个人信息较多,很难对其进行分离的时候,上述方法实现起来就会比较麻烦了。接下来介绍一种比较放宽的 cache 方式,就是只对用户未登录的 CMS 首页进行 cache,一旦发现用户处于登录状态,则跳过 cache 部分,直接运行相关代码,我把这种方法称为“[u]选择性 cache[/u]”。这种方法中,我们牺牲了一部分可 cache 的情况,但很大程度上提高了个人信息的可扩充性,也就是说个人信息的多少、显示的位置等等都不再受到限制,这是值得的,毕竟修改服务端代码要比修改大量的 JavaScript 代码要来得方便,而且 JavaScript 的调试也会比较麻烦。

分析一下这种 cache 方式,概要流程图如下:

image

代码片段如下:

<?php
session_cache_limiter("must-revalidate"); 
session_start();
if (empty($_SESSION['USER'])) { //未登录时才使用 cache
    ….    //输出 cache
} else {
    //  直接输出页面内容,此条件下与未使用 cache 时一样
    $data =& get_data();
    echo $data;
}   //end if 
?>

这里需要说明的一点是,由于 PHP 在使用 SESSION 时,php.ini 中默认设置的 session.cache_limiter 为 nocache,所以需要修改 cache_limiter,设置成 must-revalidate,使得客户端再次浏览当前页时必须发送相关 HTTP 头信息到服务器进行验证,然后才决定是否加载客户端本地 cache。不要把客户端本地 cache 与服务器端 cache 搞混,之后的代码片段中会充分利用客户端 cache 和 服务器端 cache 机制达到缓存的目的。关于 must-revalidate,请参考 HTTP 规格说明书 RFC 2612 的 14.9.4 章节

上边的代码并不完整,接下来是更加深入的探讨客户端 cache 机制了,利用客户端 cache,可以有效地减轻服务器端负载。首先了解一下 HTTP 头:Last-Modified 与 If-Modified-Since。简单的说,Last-Modified 与If-Modified-Since 都是用于记录页面最后修改时间的 HTTP 头信息,只是 Last-Modified 是由服务器往客户端发送的 HTTP 头,而 If-Modified-Since 则是由客户端往服务器发送的头,其工作原理图如下:
image
可以看到,再次请求本地存在的 cache 页面时,客户端会通过 If-Modified-Since 头将先前服务器端发过来的 Last-Modified 最后修改时间戳发送回去,这是为了让服务器端进行验证,通过这个时间戳判断客户端的页面是否是最新的,如果不是最新的,则返回新的内容,如果是最新的,则返回 304 告诉客户端其本地 cache 的页面是最新的,于是客户端就可以直接从本地加载页面了,这样在网络上传输的数据就会大大减少,同时也减轻了服务器的负担。想要详细查看 HTTP 头信息,可以在 Firefox 中安装 LiveHTTPHeaders 插件,安装完成之后按 Alt+L 就可以在 Sidebar 中看到了。

现在再来完善之前的 index.php 代码:

<?php
session_cache_limiter("must-revalidate"); 
session_start();

function &get_data()
{
    //此函数用于获取本页面的输出内容
    //….
}   //end function

if (empty($_SESSION['USER'])) { //未登录时才使用 cache
    //====================================================
    //  1. 检查 HTTP 头是否符合 304 的条件
    //====================================================
    //get_last_modified() 函数需要另外单独实现,此函数用于获取服务器端 cache 文件的最后修改时间,可将时间戳保存在数据库中。
    $last_modified = get_last_modified();
    $headers = getallheaders();
    if (strtotime($headers['If-Modified-Since']) == $last_modified) {
        //  返回 304 并结束程序运行
        header('HTTP/1.1 304 Not Modified');
        exit;
    }   //end if
    header('Last-Modified: ' . gmdate('D, d M Y H:i:s', $last_modified) . ' GMT');
    //====================================================
    //  2. 检查 cache 文件是否存在
    //====================================================  
    require_once 'Cache/Lite.php';
    //  参数设置
    $options = array(
        'cacheDir' => './cache/',
        'lifeTime' => 86400, //最大 cache 一天时间
        'fileNameProtection'   => false //使用 CMS 自身提供的 id 作为名字
    );
    $cache = new Cache_Lite($options);  //创建 Cache_Lite 对象
    $id = md5($_SERVER['REQUEST_URI']); //生成对应于 cache 文件的 ID
    if ($data = $cache->get($id)) {   //存在 cache 文件,获取内容,直接输出
        echo $data;
    } else {
        $data =& get_data();
        echo $data;
        flush();
        $cache->save($data);    //保存 cache
    }   //end if
} else {
    $data =& get_data();
    echo $data;
}   //end if
?> 

测试时可以使用 LivHTTPHeaders 插件,你将会看到第一次访问时是返回 200,第二次到第N次访问时则返回了 304,而登录之后,则一直都返回 200,因为我们选择性 cache 之后,对登录之后一律运行程序输出,而不使用 cache,如果之后需要对输出的个人信息进行修改,只需要改函数 get_data() 即可,也避免了 JavaScript 的调试。

总结

除此之外,还有其它方法可以实现分离个人信息,缓存动态页面的目的。而且为了提高服务器运行效率,还可以使用数据库 cache、Squid 反向代理等,如 ADOdb 的 cache。目前用的比较多的 Drupal 应用的就是本文中提到的第二种方法。

参考资料

HTTP Caching & Cache-Busting for Content Publishers
Hypertext Transfer Protocol — HTTP/1.1
PHP Anthology, Volume 2: Applications. Chapter 5: Caching
Caching Tutorial for Web Authors and Webmasters
Drupal 源代码

5 Comments on “关于 Cache(4)”


By zeal. June 13th, 2005 at 3:25 pm

我们目前采用的是oracle cache server以及squid。对于不能cache的内容采取分目录存放。在代码设计的时候就考虑可cache性。对于大量需要用户交互的内容,似乎cache的作用不大。

By Nio. June 13th, 2005 at 5:02 pm

嗯,如果内容本身全都是个人信息的话或者必须登录才能浏览的页面,就用不到这种cache方法了,需要看登录与不登录的概率比而定 :)

By nc. July 17th, 2006 at 12:43 pm

感谢你文章的提示,非常不错.

By ahu. October 8th, 2006 at 5:10 pm

zeal的公司貌似有些money~

By yoyo. January 27th, 2007 at 10:24 pm

我晕,真巧啊,我们竟然认识。
我在goole里面搜索If-Modified-Since的时候来到你的网站,看到你的名字感觉熟悉,就是想不起人来了,看到上面的nio我就知道是谁了,呵呵,真有缘分啊。

你想知道我是谁吗?我们是通过div+css认识的,呵呵。

Leave a Reply

diazepam effectiveness ephedrine mexico cipro crociere generic name plavix paxil birth defect lortab 10 500 tablet blow by albuterol groove salad soma fm folic acid requirements pregnancy albuterol vs levalbuterol albuterol solution for inhalation baltimore accutane attorney bontril cod purchase phentermine check paxil drug interaction butalbital by check pay sofia viagra and tom cruise flomax 0.4 dosages xanax acid folic prenatal vitamin accutane success acetaminophen e hydrocodone celebrex effects side propecia generics lorazepam side effect of flomax nexium drugs herbal viagra review celebrex lawsuit butalbital compound with codeine discount ambien accutane topical gel florida pharmacy phentermine info drug flexeril herbal viagra cartridge discount viagra europe discontinuing effexor celebrex dosages tramadol addiction 2006 followup march post propecia diazepam ip levitra pharmacy medicine side effects ultracet folic acid 400 fluconazole homeopathy similar drug information bontril sr suicide xanax amount lortab elixir fda xanax addiction withdrawal prednisone drug interaction viagra dosages 30mg capsule ionamin nexium drug use celebrex risk 2004 celebrex celebrex lancet versus vioxx celebrex information medication vioxx vicodin 10 lorazepam info 5513 carisoprodol ionamin sales plavix and aspirin together cipro side affect paxil cr dosage plavix generic cialis uprima viagra what does oxycontin look like dose flexeril pediatric viagra mechanism of action lamotrigine lamictal cipro oflaxin generic name nexium ativan overdose symptoms prednisone asthma treatment methyl prednisone acetate hydrocodone dosing codeine comment hydrocodone discount pharmacy phentermine purchase 2002 norco bikes skelaxin elan fda meeting celebrex 150mg fluconazole antidepressant ultram crc norco ca how long does it take for viagra to work hydrocodone bitartrate acetaminophen altace ramipril folic acid mg hydrocodone 15mg flagyl dog generic overnight viagra flexeril 5 mg. ingredient in phentermine tramadol side effects celexa dosage mixing cocaine and oxycontin hydrocodone no medical record finpecia vs propecia skelaxin 800mg dose effects side wellbutrin locale of valtrex commercial bontril sr viagra discussion long term use of prednisone propecia merck meridia health system tapering prednisone meridia dosage accutane dosage beitrag name text valium valtrex contraindications prednisone tapering schedule effexor medication folic acid rich food phentermine depression discount adipex flomax forum ambien canadian pharmacy lamictal dosage bipolar butalbital apap caffeine tab blister fever valtrex generic drug for zoloft dosages lexapro bt hydrocodone ibuprofen tbtev hydrocodone addiction ephedrine mini lexapro insomnia hydrocodone addiction withdrawal symptoms anger management used wellbutrin diazepam akathisia effexor phentermine adipex generic name for viagra xl1 blue tetracycline norco medication information generic buspar celebrex pharmacy natural herbal viagra albuterol solutions tetracycline acne tramadol narcotic topamax side effects acne zoloft side effects lawyer houston accutane attorney plavix patent norco windows doors ambien sleep walking buspar side effect kaizen ephedrine hcl god hindu soma flagyl manafactory carisoprodol 350 mg meridia message board drug effects levitra side uncommon performance anxiety viagra dose low pharmacy viagra visit propecia hair loss treatment zoloft murders prednisone pregnancy category after effects of prednisone buspar weight gain xanax doseages ativan onset generic lortab pictures cod hydrocodone accutane joint pain m359 hydrocodone ambien cod blood plavix thinner long term use of zoloft 2c la lortab shreveport withdrawal meridia testimonials buspar sexual phentermine pharmacy cod lexapro medicine pirbuterol vs albuterol vicodin overdose effects energy flagyl viagra drug interactions soma brave new world folic acid epilepsy brain effects side xenical ativan in it long stays system folic acid neural tube defects azithromycin tripak hydrocodone sale best herbal viagra albuterol inhalation aerosol excess folic acid ativan vs xanax effets secondaires celexa what is folic acid used for fiv prednisone ladyman viagra opus generic viagra viagrageneric lotrel capsule plavix clopidogrel zolpidem tartrate bp soma sleep aid acetaminophen butalbital caffeine codeine ambien driving influence under propecia frontal prednisone pregnancy oldach norco birth defect xanax ephedrine trimspa butalbital addiction oxycontin addiction stories soma bicycles medical report about viagra viagra women altace 10mg alternative ativan holistic phentermine hydrochloride tablet diet ephedrine lorazepam half life ephedrine hci ultram tramadol hci tablet purchase zoloft how to wean off of effexor make ephedrine celebrex from goiters taking attorney celebrex drug houston information vioxx effexor withdrawal duration induced lamictal psychosis soma san diego tickets accutane cause hair loss antibiotics cipro albuterol sulfate side effects soma muscle relaxer info what is prednisone side effects going off zoloft drug bust in norco cipro shaky norco medicine bayer levitra zoloft or klonopin klonopin zoloft wellbutrin prednisone 20mg tab ephedrine metabolife prednisone long term effects cialis effexor info extracting hydrocodone from vicodin albuterol side effects infants valtrex side affect viagra for women tapering off effexor buspar peripheral neuropathy paxil drug interactions dosages premarin m357 hydrocodone albuterol metered dose phentermine induced psychosis drug know maker need xanax buspar seroquel flagyl and pregnancy viagra how it works flomax uroxatral antidepressant wellbutrin oxycontin withdrawals drug testing and albuterol cialis uk supplier ambien withdrawl flagyl 375 celebrex gerd carisoprodol 350 ssri withdrawal lexapro arkane soma paxil lawsuits in canada tetracycline dosage hydrocodone withdrawl paxil alcohol interactions abruptly stopping zoloft on line cipro low dose prednisone ephedrine weight loss inject generic oxycontin allergic to skelaxin prednisone and weight gain 2005 cialis followup november post viagra hydrocodone issue legal adipex diet medication didrex dose of vicodin flomax tamsulosin phentermine side effects dangers ephedrine hydrochloride effects getting off zoloft tramadol mechanism of action lotrel generic norco bikes 05 hives topamax topimax agitation akathisia paxil effexor dosages accutane statistics mb12 valtrex corona district norco school unified celebrex attorney dallas canine flagyl adderal buspar use acetaminophen and hydrocodone ephedrine meth recipe soma fm indie pop rocks prednisone psychosis ativan epidural injection cipro antibiotics prednisone flushing arizona accutane attorney tramadol doseage tetracycline discoloration of tooth aura soma products what is diazepam compare didrex mylan valium cough hydrocodone syrup ionamin supplier uk lexapro gaining weight lotrel 1020 mg adverse reaction to nexium buspar hostility paxil weight loss tetracycline acne treatment withdrawal from lexapro five vicodin chased with a shot of clarity lyrics allergic reaction to cipro xanax ambien gal nexium attorney blindness viagra canadian ambien aldara valtrex wellbutrin and libido valium overdose mg lexapro and phentermine azithromycin drug interaction alternative celexa mylan 345 valium effects prednisone side complication plavix lortab m363 folic acis xanax and pregnancy how does phentermine work hydrocodone picture super b complex with folic acid adipex datasource ephedrine extracting drug information on wellbutrin tardive dyskinesia effexor xanax interactions azithromycin monograph akane soma big topamax dosing black market report on ephedrine effexor side effects weight gain c diff flagyl zoloft murder charleston phentermine dosages addiction symptom vicodin ephedrine ramipril accutane before and after photos wellbutrin adhd ultram and drug testing ativan breast feeding amount of folic acid levitra doseage effects plavix side bontril drug information sr a331 vicodin hydrocodone overnight cod wellbutrin long term use vicodin addiction symptoms topamax side affects norco com diazepam suppositories xanax effects its medicine side ultram flagyl bloating bronchitis prednisone zoloft maoi albuterol nebulized treatment discontinuing celexa ambien amnesia effets secondaires paxil snorting hydrocodone effects addiction hydrocodone recovery accutane inflammatory bowel disease lamictal pregnancy registry fioricet pain relief description of lorazepam folic acid indication folic acid deficiency anaemia tramadol hcl 50mg generic sales viagra effexor seizure phentermine blue clear plavix and aspirin description of viagra discontinuation syndrome effexor comment info personal phentermine remember cold famvir sore bruising plavix sleep 2b celexa dysphagia elderly in risk prednisone allergy celexa side effects xanax addiction and withdrawal prednisone drug side effects zoloft breastfeeding gad lexapro chlorpheniramine carbetapentane ephedrine and phenylephrine plavix aspirin trial double lamictal vision norco bike frames lexapro and memory loss cialis dose levitra low offer special viagra drug lamictal loss weight affect lexapro side baikalguide effexor from keyword withdrawal side effects of lexapro premarin estrogen cream snorting vicodin effects ambien generic drug test xanax cold extraction hydrocodone water dysfunction erectile viagra accutane disease liver desensitization to flagyl buspar 50 discount didrex zoloft and breast feeding lorazepam prn ambien 5mg blood celebrex clots fluconazole from reaction side effects of prednisone in canines injecting ativan attorney florida keyword oxycontin apo lorazepam flagyl er accutane warning alcohol ativan herbal viagra canada extract hydrocodone side effects of accutane zolpidem tartrate tablets b.p. lexapro generic name horse premarin rescue female viagra alternative flagyl giardia paxil and alcohol effects mp 58 soma lortab side effects buspar and hunger loss sign of lortab addiction compulsive eating wellbutrin nexium drug class butalbital apap caffeine tbmik lorazepam dosages viagra generico impotencia vicodin long term use side effects cialis effective soft tab treatment flomax women fenfluramine and phentermine buspar for child diazepam maker bontril 105mg viagra class action albuterol sulfate drug lexapro buspar buspar libido tapering off lexapro apo diazepam side effects of tramadol hydrochloride pittman zoloft defense celebrex machine slot hydrocodone side effects phentermine adipex ionamin lorazepam intensol package insert folic acid bloodpressure celebrex blood clots phentermine drug test how to wean off celexa premarin labial adhesion danger phentermine ambien sleeping acid folic information atarax 10 mg symptoms of paxil withdrawal norco intermediate school california generic viagra review dose of ambien valtrex canker sore paxil class action suits hydrocodone extraction paxil cr 12.5 mg brave huxley in new soma world zoloft libido dosing hydrocodone folic acid content in foods difference between valium and xanax pittman zoloft murder celexa canada block ephedrine salt custom hrt phentermine hydrocodone info zoloft alcohol interaction valium addictions flexeril shipping hydrocodone acetamin zoloft side effects 105 bontril sr melphalan prednisone herbal viagra alternative review accutane litigation group altace side effects weight gain ivy keyword poison prednisone prednisone overdose symptoms purchase azithromycin celebrex class action canada topamax mood stabilizer agriculture ephedrine fluconazole 150 mg vicodin hp es health benefit of folic acid lortab 5325 propecia results generics cialis lortab by mail cymbalta effexor vs hydrocodone w apap hydrocodone acetominophen vicodin withdrawal help folic acid injectable m362 vicodin uk cialis supplier prednisone acetate ophthalmic suspension norco exc 2.0 generic ionamin long term effects of accutane folic acid stability hydrocodone separation acetaminophen acid blood folic pressure flexeril pinched nerve mexican pharmacies hydrocodone xanax overdoses zoloft hair loss hydrocodone apap 10 325 celebrex blood clot m363 vicodin gynecomastia nexium prednisone for asthma flomax warning metered dose albuterol zoloft murder case cialis comparison diflucan viagra baldness hair lasercomb loss propecia plavix effectiveness prednisone injections discount viagra viagra deutschland 2006 cialis e followup mail name post subject prednisone for lupus prednisone toxicity intoxication valium buspar recall lotrel 1020 brand generic levitra name vs canadian pharmacy xanax lorazepam injection ems ionamin image new york accutane attorney effexor medicine buspar increased libido prednisone treatment for dogs hydrocodone information phentermine success story flagyl nistatina generic for prednisone medications lexapro discussion generic viagra effexor sr accutane journal photos effexor xr withdrawal symptoms canada pharmacy propecia paxil class action settlement generic vicodin m357 zoloft confusion xanax overdose treatment frontal hair loss propecia lotrel side affect accutane side effects buspar from withdrawal vicodin dosage withdrawal symptoms effexor acute urticaria atarax louisiana accutane attorney lexapro zoloft ambien sale ephedrine sulfate injection kyo soma hydrocodone 2f apap 102f660 paxil withdrawal effects ambien horror story butalbital medication lortab 10650 mg how dissolve oxycontin adipex guam diazepam overdose death ambien alternative albuterol horse azithromycin and pregnancy meridia capsule hydrocodone ingredient ephedrine pseudoephedrine difference viagra side effects azithromycin chlamydia dose lortab pic lexapro dosage 30 mg accutane alcohol effects prednisone tongue celebrex drug interaction flomax 4 effects ephedrine paxil side effects withdrawal capsule phentermine m stage of cell division and folic acid ephedrine sales folic acid supplements in pregnancy norco intermediate school chlamydia treatment cipro pdr lortab lexapro ocd alcohol avoid effexor taking while why valtrex herpes zoster folic acid sources prednisone taper drug lexapro dosage information generic oxycontin buspar work flexeril drug testing lowest cost xenical is plavix a antiplatelet lexapro side effects withdrawal cialis generic india wellbutrin bipolar lamictal side affect ban ephedrine lifted celebrex generic medication vioxx celebrex lawsuit attorney paxil withdrawal symptoms ultram 50 mg. female viagra patch didrex can kill you skelaxin drug interactions mark martin viagra prednisone allergic reaction to cialis generic discount common withdrawal effects celexa carisoprodol medication injecting xanax muscle relaxer soma ephedrine alternative food rich in folic acid softtab cialis bontril phentermine adipex lamictal mood chewable kidstoned valium acquisto levitra folic acid and hair loss celexa alcohol hydrocodone cough syrup wyle laboratories norco boxed viagra warning angioedema effexor tramadol hydrochloride overdose folic acid and hair growth lortab ingredient ephedrine product propecia and does it work viagra women effects flomax dosage levitra drug for erectile dysfunction prednisone 5 mg lotrel novartis zoloft blob accutane lawsuit legal how to inject hydrocodone celexa message boards nexium contraindications tramadol dose folic acid for pregnancy brand diazepam nelson canadian pharmacy paxil hydrocodone and pregnancy cipro for anthrax effexor dosage information adipex phentermine xenical astrazeneca nexium accutane before and after pictures lexapro message boards norco california state prison effexor xl albuterol nebulizers discount fioricet irritable bowel syndrome and accutane 90 cod count day phentermine ativan wyeth b12 and folic levitra couch graffiti snorting vicodin side effects xanax withdrawl hydrocodone info m357 photo canadian pharmacy vicodin prednisone side effect flexeril 5mg viagra tablets for sale generic propecia 5mg candidal vulva and flagyl tramadol drug class side effects of albuterol in child how long does it take accutane to work prednisone to erowid tramadol zoloft anxiety hydrocodone vs codeine 180 cash delivery tramadol ephedrine tablet 1mg ativan lortab 10 mg cialis versus viagra buspar recall word levitra uk ativan and alcohol withdrawal viagra kaufen ambien sleep vicodin drug interactions plavix drug assistance ephedrine hcl tablet lexapro and alcohol use flomax manufacturer who viagra cialis viagra alternative herbal phentermine information 10 lortab view missed dose of paxil xanax and wine excessive plavix sleepiness lotrel dosage purple xanax hydrocodone m367 hydrocodone acap generic vicodin adipex p 37.5 paxil alcohol side effects valtrex dosing information coming off zoloft hydrocodone withdrawal forums albuterol medication butalbital discount zoloft insomnia hydrocodone addiction treatment zoloft dosing cipro xr 1000 gerd nexium prednisone withdrawl vicodin withdrawl ultram addiction adverse affects of zoloft oxycontin abuse treatment ephedrine salt bipolar lamictal flomax use for woman 50 phentermine ship state accutane cost vicodin tuss elixir able hydrocodone laboratory picture side effects of flagyl soma fm shoutcast folic acid pregnant women groove salad soma affect flomax side diazepam stability ambien zolpidem folic acid and pregnancy fioricet 325 mg effexor memory loss loratab lortab diazepam doses pictures of vicodin paxil antidepressant effexor suicide premarin mare zoloft interactions zoloft hallucination lexapro side affects florida accutane attorney prednisone tapering dosepak generic name oxycontin impotence propecia prednisone interactions generic pharmacy viagra soma san diego concerts indication lexapro side effects of prednisone 100 bblog by often phentermine popl powered dog drooling excessive in prednisone ephedrine drug test side effects of the drug tramadol ativan overdose lortab medication by caused diarrhea nexium too much folic acid in pregnancy approved cialis fda genuine flexeril 10 folic acid before pregnancy phentermine mechanism of action asthma albuterol acid atomic folic notation standard ambien effects flomax reaction danger meridia soma dey lorazepam withdrawal symptoms ambien effects side adipex side effects methyl prednisone pack tetracycline eye ointment vitamins with folic acid withdrawl from lexapro purchase didrex slow fe folic lexapro and alcohol consumption 2006 norco bikes importance of folic acid in pregnancy viagra cost uk attack celebrex heart vioxx vioxx purchase ephedrine products hydrocodone 5 500 acepromazine diazepam lamictal and weight loss xanax overdose mg b12 folic acid b6 coming off paxil cr valtrex cold sores high folic acid foods ephedrine 60 effexor acid concentration dictyostelium folic colon cleanse ambien generic viagra uk xanax lyrics lotrel generic name vasopro ephedrine 48tb erowid hydrocodone bontril 105 mg acid cell cycle folic 75 liquid lortab effexor antidepressant side effects klonopin vs valium cipro culture does effect have in sepsis accutane claim flash hot paxil 150mg detox effexor from xr levitra couch spray paint buspar experience opiates hydrocodone crohns phentermine tinea capitis fluconazole prednisone tapering off oxycontin addiction symptoms glaucoma topamax tetracycline dose for acne complication effexor other suicide xr vicodin drug testing generic propecia vs propecia topamax epilepsy acid b12 folic vitamin lexapro lawsuit capsule ionamin drug effexor xr akane soma picture valtrex dose approved first phentermine diazepam concentration effects oxycontin detoxification 50 mg tramadol vicodin codeine allergy going off wellbutrin accutane depression fioricet sale celebrex interacts with aleve ephedrine extraction huang ma r039 xanax sofia viagra model levitra vs viagra vs cialis levitra commercial girl hydrocodone and acetaminophen lexapro review cods hydrocodone valtrex dosage 10 diazepam mg phentermine eon lab ativan chart propofol flexeril ibuprofin interaction premarin cream wrinkles viagra hgh norco school district celebrex ingredient xanax xr 2mg is ultram a controlled substance use of prednisone in cats drug interaction valium chewable dispersible lamictal tablet helped left nexium side escitalopram oxalate lexapro bargain ionamin prednisone tapering sofia viagra pictures flomax drug buspar dosage hydrocodone cods valtrex pregnancy levitra dose pennsylvania accutane lawyer danger propecia folic acid tablets side effects lotrel safe valtrex side effects hydroxycut with ephedrine for sale cipro hc tramadol doses butalbital tablet apap ephedrine side effects phentermine drug interaction bontril cat drug meridia diazepam dosage celebrex fda medicine vioxx dosing flagyl how many mgs soma san diego music nexium drug hydrocodone ibuprofen bontril sr 105 norco windows inc. vicodin addiction stories xanax half life ultracet information soma san diegoca hidden valley golf course norco ca soma muscle relaxer company soma groove salad effexor withdrawal symptoms what food contain folic acid zoloft alcoholism rosario castellanos valium 10 bontril 270 cialis and anti depressants cialis levitra vs paxil side effects alcohol drug information zoloft oxycontin cash on delivery xanax and grapefruit hydrocodone cash generic name zoloft celexa use bontril effects generic side discount pharmacy viagra viagra grapefruit folic acid b vitamin butalbital cod nexium weight gain female viagra use celebrex class actions stop taking lexapro ephedrine plus folic acid synthesis pathway 5mg diazepam picture of generic xanax buspar ocd ephedrine effects generic name for lexapro pseudo ephedrine generic for celexa diazepam 5mg tablets celexa withdraw before dependence long valium lamictal side effects maoi inhibitors paxil effects of diazepam norco viagra alternative adipex drug effexor discontinuation syndrome celebrex contraindications prednisone cat side effects prednisone in dogs adverse reaction zoloft didrex ruling prednisone rash effexor withdrawl symptons dysfunction erectile levitra plavix mechanism of action lexapro withdrawal help clinical data levitra meridia coupon with ephedrine prednisone tapering dose albuterol inhaler dosage ephedrine sulfate accutane alcohol mp flomax butalbital pharmacy side effects of hydrocodone zoloft weight gain fluconazole diflucan soma san diego accutane and diabetes flagyl used to treat bulk carisoprodol ambien long term lortab 7.5 500 tablet texas accutane lawyer flomax use in women lamictal rash fda paxil effects side topamax norco bmx bikes generic nexium pfizer fda celebrex albuterol inhaler instructions description of meridia prednisone withdrawl symptoms indication tramadol antidepressant paxil famvir dosage cipro and birth control ephedrine fact addiction hydrocodone biotek ephedrine xanax during pregnancy hydrocodone apap 7.5 750 acid folic vitamin stop taking wellbutrin maker of lorazepam effexor effets secondaires celexa manufacturer meridia effectiveness information on drug zoloft celebrex ibuprofen prednisone package insert arnica effexor prednisone 200 mg is ultram addictive meridia drug interaction flagyl use tramadol hcl liquid xanax acid folic identification receptor generic viagra wholesale easy vicodin access hydrocodone with no consult cream2buses flagyl motorvac norco adverse canada celebrex effects side vioxx viagra information dizziness from withdrawal zoloft m357 generic hydrocodone i ionamin use hydrocodone lortab topamax side affect lortab pharmacy hydrocodone and ibuprofen folic acid dose gabitril topamax vs meridia mexico lorazepam and alcohol xanax 0.5 ativan effects3a long term able labs phentermine norco batting cages folic acid and breast cancer butalbital apap caffeine plus folic acid breast cancer bupropion effects side wellbutrin zyban xanax side affects generic lotrel xanax pregnancy effects of celebrex viagra side effects women lexapro and hair loss discontinuation symptom effexor xr how much folic acid pregnant bontril methotrexate and folic acid stent placement plavix mylan 477 valium lorazepam and medicine flomax cataract alkaloid ephedrine xanax doses b 12 folic acid administration als celebrex drug food vioxx albuterol syrup dose cost levitra low 2 ephedrine stacker info rx service vicodin ultram tramadol hci flagyl aventis adipex phentermine vs flexeril warning xanax for sale xanax weight is butalbital an opiate common side effects of lexapro celexa side affect lexapro overdose folic acid food content lotrel cap going off lexapro side effects accutane bowel irritable syndrome m357 vicodin inexpensive viagra hydrocodone codeine allergy vicodin hp 10660 prednisone tapering side effects fioricet codeine flagyl 500 tri pak azithromycin vicodin tuss how long does it take paxil to work lamictal dosages celebrex recalls prednisone for dogs withdrawal from celexa xanax dosages gg258 xanax snorting carisoprodol effexor symptom there withdrawal foods rich in folic acids accutane bowel disease inflammatory lotrel 1020mg flomax bph paxil or lexapro hydrocodone 7.5 plavix medication effects of xanax albuterol mdi drug mexican pharmacy viagra atarax use ativan overnight effexor message board injecting oxycontin how to flucanozole fluconazole acid folic food high hydroxycut ephedrine boston accutane attorney celexa medication drug information xanax folic acid vitamin b12 albuterol ingredient levitra ordinare effects lamictal rash side 2006 e followup mail march name post subject viagra picture of meridia carisoprodol info soma xanax overnight lotrel medicine azithromycin in pregnancy effexor xr withdrawal using viagra recreationally abuse ephedrine hypoglycemia folic acid vitamin b 12 side effects of folic acid diazepam experiment soma fm groove salad prednisone taper dosage lortab 10s what is folic acid ephedrine nebraska discount lexapro pharmacy purchase distress gi lortab percocet adipex delivered in florida attack celebrex heart cipro info med2c rx medication norco effexor antidepressant altace blood pressure medicine both can take together trazodone wellbutrin accutane birth defect annotated bibliography dictionary guide internet medical phentermine reference research generic information viagra cialis followup post ativan data hypotension tramadol fluconazole gemfribozil ambien contraindications carisoprodol albuterol pulmicort vardenafil levitra carisoprodol withdrawal zoloft dosage accutane class action flomax dose hydrocodone excretion ativan drug testing effects side tramadol herbal substitute viagra pmdd zoloft withdrawls from vicodin accutane side effects lawyer side effects for flomax drug euphoria skelaxin georgia accutane claim what foods contain folic acid erowid xanax benefits of folic acid for men lorazepam stability prehospital effects of meridia on heart affect ativan side flexeril use zolpidem india birth defect paxil abg generic oxycontin drug info soma ambien lethal dose ultracet dosage vicodin watson buspar for anxiety lamictal allergy bontril sales nexium 40mg prednisone muscle growth zoloft withdrawal help vicodin m367 side effects of the drug premarin prednisone eye drop ephedrine weight loss products carisoprodol dosage apapa0 butalbital attorney celebrex hypertension tx vioxx folic acid drug between difference ephedra ephedrine flagyl adverse reaction acid folic formula low dose accutane rosacea generic viagra overnight cialis tablet next day ambien accutane drug viagra dosage information cipro antibiotic side effects cialis soft tabs canadian pharmacy wellbutrin xl caverta veega generic viagra hydrocodone apap side effects oxycontin abuse effects aneurism coiling plavix acid folic growth hair prednisone canine 2006 followup january post viagra nebulizer treatment with albuterol hydrocodone m358 ionamin ativan information sipping soma lyrics single dose azithromycin levitra commercials buspar dose stopping prednisone generic phentermine topamax generic