簡體   English   中英

php http標頭

[英]php http headers

想知道幾件事。

http標頭是否緩存頁面上的所有內容。 如果我有一些javascript文件,它會緩存它們以及后續頁面,或者它更復雜。 示例:如果我在page1.php上緩存所有javascript文件,文件仍然會緩存在page2.php上,或者它是否緩存了page1.php的文件,只適用於page1.php。

另一個問題是......

我應該廢棄http標頭並只使用APC,如果是這樣,它有多復雜,或者實際上可以同時使用它們(要求cuz yslow說使用http標頭)。 感謝任何信息,我一直在閱讀,但這些問題在文中沒有真正回答。

如果您只是提供常規.js文件,您的Web服務器將為您處理緩存。 .js文件將在第一次從您的某個頁面鏈接時下載。 當用戶重新加載該頁面,或者完全轉到另一個使用相同.js文件的頁面時,瀏覽器將使用緩存副本。 當您通過<script src="code.js"></script>標記加載腳本時,這適用。

如果您有獨立的.js文件,那就是這樣。 另一方面,如果您的PHP代碼生成的HTML中隱藏了JavaScript代碼,例如:

<script type="text/javascript">
  alert("Hello world!");
</script>

...每次加載.php文件時都會重新生成這些腳本。 如果您要緩存PHP腳本的輸出,那么您需要通過從PHP腳本設置適當的HTTP標頭來自己管理緩存,通過Cache-Control系列標頭或If-Modified-SinceETag樣式的標題。

但是,緩存和PHP文件通常不會一起使用,因為您通常會生成基於用戶輸入,時間,Cookie等更改的動態內容。因為緩存純粹是一種優化,因此針對過早優化的一般編程警告適用。 如果你搞砸了你的HTTP標題,你可能會讓自己感到很頭疼(相信我!)。 根據經驗,您可以讓Apache或IIS處理類似這樣的高級HTTP事務,如果您有特殊需要 ,只能使用HTTP標頭。

我認為你混淆了不同類型的緩存。 你在這里談到了3到4個非常不同的東西。

  1. 瀏覽器緩存 - 任何普通的瀏覽器都會在頁面之間緩存圖像,JS文件和CSS文件。 這意味着,瀏覽器第二次想要顯示您站點中的任何特定圖像時,它會從其本地磁盤緩存中加載它而不是返回到您的服務器。 所有這些都發生了 - 不要亂用它,它只是有效。 (例外:瀏覽用戶已關閉緩存,您已更改標頭以避免緩存,您的mime.types未正確設置,因此瀏覽器不會正確處理這些文件。)

  2. 服務器端內容緩存 - 如果您的頁面在服務器上緩慢呈現,您可以使用各種磁盤和RAM緩存方案來保持輸出,並防止服務器每次都必須呈現每個頁面。 這僅適用於相當靜態的站點或頁面的靜態部分。

  3. APC內容緩存 - APC具有允許您將任意內容填充到服務器端RAM緩存中的命令。 如果你的系統需要花費很長時間來渲染,但可以被許多服務器命中重用,這是一個不錯的選擇。

  4. APC代碼緩存 - 您的文本PHP腳本是“偽編譯”,然后發送到PHP運行時執行。 這個“偽編譯”階段可能非常慢並且是冗余的,因此APC將“psuedo-compiled”PHP階段緩存在RAM中。 它可以非常方便地加速整個網站。

對不起,如果這是TMI。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM