Uncaught SyntaxError: Unexpected token <


將前端項目打包到nginx上面后,總報錯誤:Uncaught SyntaxError: Unexpected token <

問題原因:是緩存機制導致的,瀏覽器是緩存了html文件的,所以當刷新的時候會導致它指向的是舊的js文件,所以就會報錯。

解決方案:可以配置nginx去不允許瀏覽器緩存html文件,即是將cache-control設置成:no-cache,然后再重啟Nginx就解決了。

 

 


 

HTTP協議的Cache -Control指定請求和響應遵循的緩存機制。
在請求消息或響應消息中設置 Cache-Control並不會影響另一個消息處理過程中的緩存處理過程。

請求時的緩存指令包括no-cache、no-store、max-age、 max-stale、min-fresh、only-if-cached等。
響應消息中的指令包括public、private、no-cache、no- store、no-transform、must-revalidate、proxy-revalidate、max-age。

no-cache: 數據內容不能被緩存, 每次請求都重新訪問服務器, 若有max-age, 則緩存期間不訪問服務器.

no-store: 不僅不能緩存, 連暫存也不可以(即: 臨時文件夾中不能暫存該資源)

private(默認): 只能在瀏覽器中緩存, 只有在第一次請求的時候才訪問服務器, 若有max-age, 則緩存期間不訪問服務器.

public: 可以被任何緩存區緩存, 如: 瀏覽器、服務器、代理服務器等

max-age: 相對過期時間, 即以秒為單位的緩存時間.

no-cache, private: 打開新窗口時候重新訪問服務器, 若設置max-age, 則緩存期間不訪問服務器.

private, 正數的max-age: 后退時候不會訪問服務器

no-cache, 正數的max-age: 后退時會訪問服務器

點擊刷新: 無論如何都會訪問服務器.

Expires:

設置以分鍾為單位的絕對過期時間, 優先級比Cache-Control低, 同時設置Expires和Cache-Control則后者生效.

Last-Modified:

該資源的最后修改時間, 在瀏覽器下一次請求資源時, 瀏覽器將先發送一個請求到服務器上, 並附上If-Unmodified-Since頭來說明瀏覽器所緩存資源的最后修改時間, 如果服務器發現沒有修改, 則直接返回304(Not Modified)回應信息給瀏覽器(內容很少), 如果服務器對比時間發現修改了, 則照常返回所請求的資源.

注意:

Last-Modified屬性通常和Expires或Cache-Control屬性配合使用, 因為即使瀏覽器設置緩存, 當用戶點擊”刷新”按鈕時, 瀏覽器會忽略緩存繼續向服務器發送請求, 這時Last-Modified將能夠很好的減小回應開銷.


參考文檔:https://www.cnblogs.com/sfnz/p/5383647.html


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM